微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【SQLSERVER】存储过程基础

1.声明变量
DECLARE   @F001   SMALLINT ,              @F002   INTEGER ,              @F003   VARCHAR ( 20 ),              @F004   CHAR ( 20 ),              @F002   MONEY
2.赋值语句
set   @F001   =   space ( 40 )
3.条件判断(IF...ELSE)
If  condition  Begin      [  statements   ] END ELSE   BEGIN      [  elseifstatements  ] END
4.多分支判断(case...when...then...else...end)
SET   @F011   = CASE         WHEN   [ testexpression1 ]   THEN    @F001         WHEN   [ testexpression2 ]   THEN    @F002         WHEN   [ testexpression3 ]   THEN    @F003         WHEN   [ testexpression4 ]   THEN    @F004 END
5.循环(while)
While  condition  Begin     [  statements  ] End
6.动态定义游标
SET   @strsql   =   '  DECLARE  name_cursor  CURSOR  FOR   '   +   @insql EXEC   ( @strsql )
7.遍历游标
FETCH   NEXT   FROM  name_cursor  into   @F001 , @F002 WHILE    @@FETCH_STATUS   =   0   BEGIN         FETCH   NEXT   FROM  name_cursor  into   @F001 , @F002 END
说明:FETCH_STATUS检索到数据返回0,失败返回-1,可判断是否滚动未到结尾。 8.获得游标行数
SET   @RECCNT   =   @@ROWCOUNT
9.事务处理
BEGIN   distributed   transaction WHILE   @@TRANCOUNT   >   0         commit   transaction
10.字符串连接
SET   @m_sql   =   @m_sql   +   '  Where F001 =  '''   +   @F001   +   '''' SET   @m_sql   =   @m_sql   +   '  F002 =  '   +   CONVERT ( varchar , @F002 )
11.创建临时表存储外部数据表 说明:临时过程用 # 和 ## 命名,可以由任何用户创建。创建过程后,局部过程的所有者是唯一可以使用该过程的用户
CREATE   TABLE  #DMPARHED (FMCD    int ,FMNAM   varchar ( 50 ),MGYO1   smallint , constraint  DMPARHED_P  primary   key  (FMCD)) SET   @asql   =   '' SET   @asql   =   @asql   +   ' INSERT INTO #DMPARHED ' SET   @asql   =   @asql   +   '  SELECT FMCD,FMNAM,MGYO1 FROM ' SET   @asql   =   @asql   +   '  OPENQUERY(Lk_MDB_NEO32,  '' SELECT FMCD,MGYO1 FROM DMPARHED ' SET   @asql   =   @asql   +   '  WHERE SYSNO = 1 '' ) ' execute ( @asql )
创建临时表的另类方法
select  a.name,a.password  from with as  temp1 select   *   from  emp ( select   *   from  temp1 union select   *   from  temp1) a where  a.name = ' hao '
12.存储过程的调用及返回值 (1)存储过程的声明
CREATE   PROCEDURE  name_produce      @F001    VARCHAR ( 20 ),            @F002    SMALLINT  OUTPUT
(2)VB.NET调用存储过程
Private  sqlCmd  As   New  OleDb.OleDbCommand sqlCmd.CommandText  =   " prNK3020SC03 " sqlCmd.CommandType  =  CommandType.StoredProcedure Dim  parampre1  As  OleDb.OleDbParameter  =  sqlCmd.Parameters.Add( _           New  OleDb.OleDbParameter( " @F001 " , OleDb.OleDbType.VarChar,  20 , _          ParameterDirection.Input)) Dim  parampre2  As  OleDb.OleDbParameter  =  sqlCmd.Parameters.Add( _          New  OleDb.OleDbParameter( " @F002 " , OleDb.OleDbType.SmallInt)) parampre2.Direction  =  ParameterDirection.Output sqlCmd.Parameters( " @F001 " ).Value  =  aF001 sqlCmd.Parameters( " @F002 " ).Value  =  aF002 sqlCmd.ExecuteNonQuery() aF002  =  sqlCmd.Parameters( " @F002 " ).Value.ToString()
(3)存储过程调用存储过程
DECLARE   @C001         VARCHAR ( 20 ),              @C002         SMALLINT EXEC  name_produce  @C001 , @C002  output
CREATE   PROCEDURE  dbo.getUserName @UserID   int , @UserName   varchar ( 40 ) output as set  nocount  on begin if   @UserID   is   null   return select   @UserName = username from  dbo. [ userinfo ] where  userid = @UserID return end
13.Update语句常见错误总结
-- Update  name_table  set        F001  =   @F181 ,       F002  =   @F182 Where        F003  =   @F003 -- × Update  name_table        F001  =   @F181 ,       F002  =   @F182 Where        F003  =   @F003 -- × Update  name_table  set        F001  =   @F181 ,       F002  =   @F182 , Where        F003  =   @F003 -- × Update  name_table  set        ,F001  =   @F181        ,F002  =   @F182 Where        F003  =   @F003
14.Insert语句常见语法错误总结
-- INSERT   INTO  name_table(,KEY_FIELD,BUSYOCD ) Values ( @F001 , @F002 ) -- × INSERT   INTO  name_table( F001,F002 ) Values (, @F001 ,F002 ) Values ( @F001 , @F002 ,) -- × INSERT   name_table( F001, @F002 )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐