SqlSerVer SQL及存储过程整理

SQLSERVER


变量声明有两种方式
1.set @aa='123'
2.select @aa = a from TABLE_NAME

游标声明有三种方式

这里是while循环语句

cursor游标的状态 用@@FETCH_STATUS 来进行表示 

@@fetch_status是全局变量是全局变量

 

 

@@fetch_status是MicroSoft SQL SERVER的一个全局变量

其值有以下三种,分别表示三种不同含义:【返回类型integer】

0 FETCH 语句成功

-1 FETCH 语句失败或此行不在结果集中

-2 被提取的行不存在

@@fetch_status值的改变是通过fetch next from实现的

“FETCH NEXT FROM Cursor”

 

面的示例用 @@FETCH_STATUS 控制在一个 WHILE 循环中的游标活动。

DECLARE Employee_Cursor CURSOR FOR  --声明

SELECT LastName, FirstName FROM Northwind.dbo.Employees

OPEN Employee_Cursor  --打开游标才能生效

FETCH NEXT FROM Employee_Cursor  --赋值

--循环开始

WHILE @@FETCH_STATUS = 0

BEGIN

FETCH NEXT FROM Employee_Cursor

END

--循环结束

CLOSE Employee_Cursor  --关闭游标

DEALLOCATE Employee_Cursor  --销毁游标

如果是sqlserver:用convert或者cast  进行类型装换

随机数可以用right('00000000' + cast(cast(rand(checksum(newid()))*10000000 as int) as varchar),8)这个生成


SELECT NEWID() 36位随机数
SELECT REPLACE(CAST(CAST(NEWID()AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER),'-','') 32位随机数
存储过程可以动态生成游标,但不可动态声明变量,且语句的类型需要为NVARCHAR
{CONVERT(CHAR(6),DATEADD(month,-1,'20180925'),112)
DECLARE @v_COLUMN_SQL  NVARCHAR(4000),
SET @v_COLUMN_SQL='DECLARE cur1 CURSOR FOR SELECT distinct '+@v_COLUMN_NAME +' FROM  TABLE_NAME WHERE SUBSTRING(DATE,1,6) =CONVERT(CHAR(6),DATEADD(month,-1,'''+@v_NOW_DATE+'''),112)'
}
 存储过程中判断为空使用is null不应使用=null
  if @v_COLUMN_SQL is null 对的
  if   @v_COLUMN_SQL = null 查不到值
   
   列转行语句
   select stuff(( select ','+COLUMN_NAME from TABLE_NAME  for xml path('')),1,1,'')
   存储过程异常的简单处理
   https://blog.csdn.net/whuarui2010/article/details/7768414

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值