以前一直在程式中寫sql,最近在sql查詢分析器中寫sql,發現很多以前寫法都行不動,下面做乙個記錄
1、sql語句中if else
if...
begin
...
endelse
begin
....
end
2、把字段賦值給變數:
declare@selectsql
nvarchar(100),@tablecount
intset
@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 游標名稱 cursorforselect 欄位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,... /*這裡重複寫一次
endclose
游標名稱
deallocate 游標名稱 (刪除游標)
例子:
declare@idint,@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
forselect[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
ifexists (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]=-
1where[id
]=@idend
fetch
next
from listdata into
@id,@tablename,@fieldname,@path,@thumbnail,@detailid,@username,@state,@thedate
endclose
listdata
deallocate listdata
基於sql語句的一些常用語法積累總結
1.當某一字段的值希望通過其它字值顯示出來時 記錄轉換 可通過下面的語句實現 case type when 1 then 普通通道 when 2 then 高階通道 end as type 其中 type 是欄位名,1 2 是字段值 2.返回資料庫中使用者表的表單名 select name from...
Mysql 一些常用語句
mysqldump u root p anclgk tmp.sql 匯出為sql mysql uroot p123456 tmp.sql 匯入 mysql use abc 使用已建立的資料庫 mysql set names utf8 設定編碼 mysql source home abc abc.sq...
站長注意SQL 注入一些常用語句
站長注意sql 注入一些常用語句 是否支援多句查詢 是否支援子查詢 返回使用者名稱 當前使用者是否為 sysadmin 固定伺服器角色的成員。當前使用者是否為 db owner 固定資料庫角色的成員 返回資料庫名 作業系統和sqlserver版本 本地伺服器名稱 http www.com.cn co...