zoukankan      html  css  js  c++  java
  • sql语句中的一些常用语法

    以前一直在程序中写sql,最近在sql查询分析器中写sql,发现很多以前写法都行不动,下面做一个记录

    1、sql语句中if else

    if ...
       begin
           ...
       end
    else
       begin
          ....
       end

    2、把字段赋值给变量:

    Declare @selectSql nvarchar(100),@tableCount int
    set @selectSql='select @tableCount1=count(1) from ['+@attachementTable+']'
    exec sp_executesql @selectSql,N'@tableCount int out',@tableCount output

    其中@tableCount output表示输出参数,多个参数写法N'@tableCount int,@param2 nvarchar(100),.....',如果需要输出,参数最后加上out

    3、sql语句中的循环(游标,话说是什么鬼,不清楚)

    DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ...
    OPEN 游标名称
    FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
    WHILE @@FETCH_STATUS=0
            BEGIN
                      SQL语句执行过程... ...
                      FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,... /*这里重复写一次
            END
    CLOSE 游标名称
    DEALLOCATE 游标名称 (删除游标)

    例子:

    Declare @Id int,@insertSql nvarchar(1000),@fileName nvarchar(100),@detailId int,@attachementTable nvarchar(100),@tableName VArchar(100),@fieldName VArchar(100),@path nVArchar(100),@thumbnail nVArchar(100),@username nVArchar(100),@state int,@thedate datetime
    DECLARE listData CURSOR FOR SELECT [id],[tableName],[fieldName],[path],[thumbnail],[detailId],[username],[state],[thedate]  FROM [pa_attachments]
    OPEN listData
    fetch next from listData INTO @Id,@tableName,@fieldName,@path,@thumbnail,@detailId,@username,@state,@thedate
    WHILE @@FETCH_STATUS=0
    Begin
    set @attachementTable=@tableName+'_'+@fieldName
    iF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'['+@attachementTable+']') AND type in (N'U'))
    Begin
    set @fileName=reverse(substring(reverse(@path),1,charindex('/',reverse(@path)) - 1)) 
    set @insertSql='insert into ['+@attachementTable+']([parentId],[name],[path],[thumbnail],[username],[state],[thedate],[uid]) values('+CONVERT(VARCHAR(10),@detailId)+','''+@fileName+''','''+@path+''','''+@thumbnail+''','''+@username+''','+CONVERT(VARCHAR(10),@state)+','''+CONVERT(VARCHAR(20),@thedate)+''',0)'
    execute(@insertSql)
    End
    else
    Begin
    update pa_attachments set [state]=-1 where [id]=@Id
    End
    fetch next from listData INTO @Id,@tableName,@fieldName,@path,@thumbnail,@detailId,@username,@state,@thedate
    END
    CLOSE listData 
    DEALLOCATE listData
  • 相关阅读:
    nginx负载均衡
    docker 使用之管理工具shipyard(五)
    docker使用之私有仓库构建(四)
    docker使用之dockerfile手动构建镜像(三)
    docker 使用之网络和存储(二)
    docker部署和使用(一)
    Java微信公众号开发
    Java实现验证码的制作
    SSH框架-Struts2基础-Action
    Java算法
  • 原文地址:https://www.cnblogs.com/huaguo/p/9974317.html
Copyright © 2011-2022 走看看