存储过程

来源:互联网 发布:telnet开启端口命令 编辑:程序博客网 时间:2024/05/29 15:04

//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语句:

Java代码  收藏代码
  1. if ..  
  2. begin  
  3.   ...  
  4. end  
  5. else if ..  
  6. begin  
  7.   ...  
  8. end  
  9. else  
  10. begin  
  11.   ...  
  12. end   

 Example:

Sql代码  收藏代码
  1. DECLARE @d INT  
  2. set @d = 1  
  3. IF @d = 1 BEGIN  
  4.    PRINT '正确'  
  5. END  
  6. ELSE BEGIN  
  7.    PRINT '错误'  
  8. END  

 

多条件选择语句:
Example:

Sql代码  收藏代码
  1. declare @today int  
  2. declare @week nvarchar(3)  
  3. set @today=3  
  4. set @week= case  
  5.      when @today=1 then '星期一'  
  6.      when @today=2 then '星期二'  
  7.      when @today=3 then '星期三'  
  8.      when @today=4 then '星期四'  
  9.      when @today=5 then '星期五'  
  10.      when @today=6 then '星期六'  
  11.      when @today=7 then '星期日'  
  12.      else '值错误'  
  13. end  
  14. print @week  

 
循环语句:

Java代码  收藏代码
  1. WHILE 条件 BEGIN    
  2. 执行语句  
  3. END    

 Example:

Java代码  收藏代码
  1. DECLARE @i INT  
  2. SET @i = 1  
  3. WHILE @i<1000000 BEGIN  
  4. set @i=@i+1  
  5. END  

 

定义游标:

Sql代码  收藏代码
  1. DECLARE @cur1 CURSOR FOR SELECT .........  
  2.   
  3. OPEN @cur1  
  4. FETCH NEXT FROM @cur1 INTO 变量  
  5. WHILE(@@FETCH_STATUS=0)  
  6. BEGIN  
  7. 处理.....  
  8. FETCH NEXT FROM @cur1 INTO 变量  
  9. END  
  10. CLOSE @cur1  
  11. DEALLOCATE @cur1   

 

Sql代码  收藏代码
  1. AS  
  2.   
  3. declare @CATEGORY_CI_TABLENAME VARCHAR(50) =''  
  4. declare @result VARCHAR(2000) = ''  
  5. declare @CI_ID DECIMAL = 0  
  6. declare @num int = 1  
  7. declare @countnum int = 1  
  8.   
  9. BEGIN  
  10. select  @countnum = count(ATTRIBUTE_CONFIG_ID) from T_ATTRIBUTE_CONFIG where CMDB_UPDATE_FLAG= 'Y' and CATEGORY_CODE =@CATEGORY_CODE  
  11.    
  12. IF (@ATTRIBUTE2='A')  
  13.   begin    
  14.         DECLARE MyCursor CURSOR for select ATTRIBUTE_CONFIG_CODE from T_ATTRIBUTE_CONFIG where  CMDB_UPDATE_FLAG= 'Y' and CATEGORY_CODE =@CATEGORY_CODE  
  15.          OPEN MyCursor FETCH NEXT FROM MyCursor INTO @CONFIG_CODE  
  16.                 set @result = @result+@CONFIG_CODE+','  
  17.              WHILE @@FETCH_STATUS = 0  
  18.                     BEGIN  
  19.                     FETCH NEXT FROM MyCursor INTO @CONFIG_CODE  
  20.                     set @num = @num+ 1  
  21.                         if(@num<@countnum)   
  22.                             begin  
  23.                                 set @result = @result+@CONFIG_CODE+','  
  24.                             end   
  25.                         else if(@num=@countnum)   
  26.                              begin  
  27.                                 set @result = @result +@CONFIG_CODE  
  28.                              end   
  29.                     END  
  30.             CLOSE MyCursor   
  31.             DEALLOCATE MyCursor   
  32.         set @result = 'insert into ' + @ATTRIBUTE1 + '(' + @result +') select '+ @result +' from '+@CATEGORY_CI_TABLENAME +' where CI_ORDER_LINE_ID='+@KEY_ID  
  33.   end             
  34.  else if((@ATTRIBUTE2='U'))  

 

sp_executesql介绍和使用:http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html


0 0