【网学网提醒】:网学会员,鉴于大家对SQL存储过程基础语法十分关注,会员在此为大家搜集整理了“SQL存储过程基础语法”一文,供大家参考学习!
存储过程基本语法:sql存储过程基本语法:来源:来源:BHCODE一.注释单行注释,语法,C++,c#中--单行注释,从这到本行结束为注释sql语法,类似C++,c#中//多行注释,C++,C#中/*…*/多行注释,类似C++,C#中/*…*/
二.变量(int,smallint,tinyint,decimal,float,real,money,sm变量(int,smallint,tinyint,decimal,float,real,allmoneysql语法,image,char,varchar......)allmoneysql语法,text,image,char,varchar......)语法:语法:DECLARE{{@local_variabledata_type}[,}[,...n]例如:例如:
--申明一个名为申明一个名为@ID的变量,declare@IDint--申明一个名为@ID的变量,类型为int型三.在SQLServer窗口中打印出变量的值
语法:语法:ASCIIPRINT'anyASCIItext'|@local_variable|@@FUNCTION|string_expr
四.变量赋值
例如:例如:--从数据表中取出第一行数据的ID,赋值给变量@id@id,--从数据表中取出第一行数据的ID,赋值给变量@id,然后打印出来Declare@IDintSet@ID=(selecttop(1)categoryIDfromcategories)Print@ID我们不能像代码那样直接给变量赋值,例如@id1,在SQL中,我们不能像代码那样直接给变量赋值,例如@id=1,如果要达到这样的功能,可以这样写:样的功能,可以这样写:
Declare@IDintSet@ID=(select1)--类似@ID=1Select@id=1--类似@ID=1Print@ID
语法,五.变量运算(+,-,*sql语法,/,……)变量运算(+,(+
以下必要时候省略变量申明--类似Set@ID=(select1+5)--类似@ID=1+51--类似@ID=1Set@ID=(select1-@ID)--类似@ID=1-@ID六.比较操作符?>(greaterthan).?<(lessthan).?=(equals).?<=(lessthanorequalto).?>=(greaterthanorequalto).?!=(notequalto).?<>(notequalto).?!<(notlessthan).?!>(notgreaterthan).没什么说的
七.语句块:Begin…end语句块:将多条语句作为一个块,C++,C#中的中的{将多条语句作为一个块,类似与C++,C#中的{}例如:例如:BeginSet@ID1=(select1)Set@ID2=(select2)End八.If,if…else….If,语法:语法:IFBoolean_expression{sql_statement|statement_block}[ELSE{sql_statement|statement_block}]例如:例如:
If@idisnotnullPrint'@idisnotnullif@ID=1beginSet@ID=(select1+1)endelsebeginset@ID=(select1+2)end
上面的例子用到了比较操作符,语句块,的语法.上面的例子用到了比较操作符,语句块,和IF的语法.
九.执行其他存储过程EXEC例如@Beginning_Date='1/01/90',EXECdbo.[SalesbyYear]@Beginning_Date='1/01/90',@Ending_Date='1/01/08'
十.事务语法:语法:
@tran_name_variable]BEGINTRAN[SACTION][transaction_name|@tran_name_variable]
例如BEGINTRAN做某些操作,--做某些操作,例如Insertinto…if@@error<>0BEGINROLLBACKTRANENDelseBEGIN
COMMITTRANEND十一.十一.游标语句取出每一行数据进行操作,我们可以在存储过程中用Selec
t语句取出每一行数据进行操作,这就需要用到游标.游标.
语法:语法:DECLAREcursor_nameCURSOR[LOCAL|GLOBAL][FORWARD_ONLY|SCROLL][STATIC|KEYSET|DYNAMIC|FAST_FORWARD][READ_ONLY|SCROLL_LOCKS|OPTIMISTIC][TYPE_WARNING]FORselect_statement[,[FORUPDATE[OFcolumn_name[,...n]]]
例如:例如:varchar(11),DECLARE@au_idvarchar(11),@au_fnamevarchar(20)–申明变量--申明一个游标--申明一个游标DECLAREauthors_cursorCURSORFORau_id,SELECTau_id,au_fnameFROMauthors--打开游标--打开游标OPENauthors_cursor--取出值--取出值@au_id,FETCHNEXTFROMauthors_cursorINTO@au_id,@au_fname--循环取出游标的值--循环取出游标的值WHILE@@FETCH_STATUS=0BEGINPrint@au_idPrint@au_fnamePrint''FETCHNEXTFROMauthors_cursor@au_id,INTO@au_id,@au_fnameENDCLOSEauthors_cursor–关闭游标--释放游标DEALLOCATEauthors_cursor--释放游标