//exist函數的使用
declare @xm varchar(20)
declare @result int
set @xm='龔志輝'
exec isExist @xm,@result output
print @result //返回1
create proc [dbo].[isExist]
@xm varchar(20),@result int output
as
begin
if exists(select * from chengji where xm=@xm)
set @result=1
else
set @result=0
end
//計算兩數值的和,out型返回
declare @a int,@b int,@c int
set @a=10
set @b=20
exec PR_Sum @a,@b,@c output
print @c
create proc PR_Sum
@a int,
@b int,
@c int out
as
begin
set @c= @a+@b
end
//計算兩數值的和,return返回
declare @a int,@b int,@c int
set @a=10
set @b=20
exec @c=PR_Sum @a,@b
print @c
create proc PR_Sum
@a int,
@b int
as
begin
return @a+@b
end
//執行動態sql語句
declare @sql nvarchar(2000)
declare @cou int
declare @id varchar(20)
set @sql='select @count=count(*) from chengji where id>@id'
set @id='1'
exec sp_executesql @sql,N'@count int out,@id varchar(20)',@cou out,@id
print @cou
SQLSERVER:
變量的聲明:聲明變量時必須在變量前加@符號
DECLARE @I INT
變量的賦值:
變量賦值時變量前必須加set
SET @I = 30
聲明多個變量:
DECLARE @s varchar(10),@a INT
if語句:
- if ..
- begin
- ...
- end
- else if ..
- begin
- ...
- end
- else
- begin
- ...
- end
Example:
- DECLARE @d INT
- set @d = 1
- IF @d = 1 BEGIN
- PRINT '正確'
- END
- ELSE BEGIN
- PRINT '錯誤'
- END
多條件選擇語句:
Example:
- declare @today int
- declare @week nvarchar(3)
- set @today=3
- set @week= case
- when @today=1 then '星期一'
- when @today=2 then '星期二'
- when @today=3 then '星期三'
- when @today=4 then '星期四'
- when @today=5 then '星期五'
- when @today=6 then '星期六'
- when @today=7 then '星期日'
- else '值錯誤'
- end
- print @week
循環語句:
- WHILE 條件 BEGIN
- 執行語句
- END
Example:
- DECLARE @i INT
- SET @i = 1
- WHILE @i<1000000 BEGIN
- set @i=@i+1
- END
定義遊標:
- DECLARE @cur1 CURSOR FOR SELECT .........
- OPEN @cur1
- FETCH NEXT FROM @cur1 INTO 變量
- WHILE(@@FETCH_STATUS=0)
- BEGIN
- 處理.....
- FETCH NEXT FROM @cur1 INTO 變量
- END
- CLOSE @cur1
- DEALLOCATE @cur1
- AS
- declare @CATEGORY_CI_TABLENAME VARCHAR(50) =''
- declare @result VARCHAR(2000) = ''
- declare @CI_ID DECIMAL = 0
- declare @num int = 1
- declare @countnum int = 1
- BEGIN
- select @countnum = count(ATTRIBUTE_CONFIG_ID) from T_ATTRIBUTE_CONFIG where CMDB_UPDATE_FLAG= 'Y' and CATEGORY_CODE =@CATEGORY_CODE
- IF (@ATTRIBUTE2='A')
- begin
- DECLARE MyCursor CURSOR for select ATTRIBUTE_CONFIG_CODE from T_ATTRIBUTE_CONFIG where CMDB_UPDATE_FLAG= 'Y' and CATEGORY_CODE =@CATEGORY_CODE
- OPEN MyCursor FETCH NEXT FROM MyCursor INTO @CONFIG_CODE
- set @result = @result+@CONFIG_CODE+','
- WHILE @@FETCH_STATUS = 0
- BEGIN
- FETCH NEXT FROM MyCursor INTO @CONFIG_CODE
- set @num = @num+ 1
- if(@num<@countnum)
- begin
- set @result = @result+@CONFIG_CODE+','
- end
- else if(@num=@countnum)
- begin
- set @result = @result +@CONFIG_CODE
- end
- END
- CLOSE MyCursor
- DEALLOCATE MyCursor
- set @result = 'insert into ' + @ATTRIBUTE1 + '(' + @result +') select '+ @result +' from '+@CATEGORY_CI_TABLENAME +' where CI_ORDER_LINE_ID='+@KEY_ID
- end
- else if((@ATTRIBUTE2='U'))
sp_executesql介紹和使用:http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html