--> title:
動態t-sql
語句常見問題與解決方案
--> author : wufeng4552
--> date: 2009-11-24 10:11:10 if
object_id
('[tb]')is
notnull
drop
table [tb] go
create
table [tb] (dt nvarchar
(20),id int
)insert
into [tb]
select
'0718093429'
,1 union all
select
'0728043205'
,2 union all
select
'0728032243',3
--1.忘記型別轉換
declare
@value int
set@value=2
declare
@sql varchar
(8000)
--錯誤的寫法
,型別不一致
set@sql=
'select * from tb where id='
+@value
exec
(@sql)/*
訊息245
,層級16
,狀態1
,行10 將
varchar
值'select * from tb where id='
轉換成資料型別
int
時,轉換失敗。 */
--正確寫法
,轉換型別
set@sql=
'select * from tb where id='
+ltrim
(@value)
exec
(@sql)
--或者
exec
('select * from tb where id='
+@value
)--2
.字串邊界符問題
declare
@value varchar
(10)
set@value=
'0728043205'
declare
@sql1 varchar
(8000),@sql2 varchar
(8000),@sql3 varchar
(8000)
--常見錯誤
set@sql1=
'select * from tb where dt='
+@value
set@sql2=
'select * from tb where dt=''+@value+'
@sql1
@sql2 /*
select * from tb where dt=0728043205
select * from tb where dt='+@value+ */
--正確寫法
set@sql3=
'select * from tb where dt='''
+@value+
''''
@sql3 /*
select * from tb where dt='0728043205' */
exec
(@sql1)
exec
(@sql2)/*
訊息105
,層級15
,狀態1,行1
遺漏字元字串
'+@value+'
後面的引號。 訊息
102,層級
15,狀態1,行
1 接近'+@value+'
之處的語法不正確。 */
exec
(@sql3)/*
dtid
-------------------- -----------
07280432052
(1 個資料列受到影響)
*/ --3.表名及欄位名的問題 --
常見錯誤寫法
declare
@tbname sysname
set@tbname=
'tb'
select
*from @tbname go
declare
@tbname sysname
set@tbname=
'[tb]'
exec
sp_executesql n'select * from @tbname'
,n'@tbname sysname'
,@tbname go
--正確寫法
declare
@sql nvarchar
(100),@tbname sysname
select
@tbname=
'tb'
set@sql=
'select * from '
+@tbname
exec
(@sql)go
--或declare
@sql nvarchar
(100),@tbname sysname
select
@tbname=
'tb'
set@sql=
'select * from '
+@tbname
exec
sp_executesql @sql
--4.返回值的問題 --
常見錯誤寫法
declare
@dt sysname
,@sql varchar
(100)
set@sql=
'select @dt=dt from tb where id=1'
exec
(@sql)
select
@dt go
declare
@dt sysname
,@sql varchar
(100)
set@sql=
'select '
+@dt+
'=dt from tb where id=1'
exec
(@sql)
select
@dt go
--正確寫法
declare
@sql nvarchar
(200)
set@sql=
'declare @dt sysname select @dt=dt from tb where id=1 select @dt'
exec
(@sql)
--或者
declare
@sql nvarchar
(200),@dt sysname
set@sql=n'select @dt=dt from tb where id=1'
exec
sp_executesql @sql,n'@dt sysname output'
,@dt output
select
@dt
scrapy常見問題與解決方案
1.輸出不正確 改 結果不變?其實是因為反覆使用命令 scrapy crawl spider o 1.json 時候,增加的輸出資料不會覆蓋,而是繼續往後面新增。2.request不執行 request url,meta callback self.parse2,dont filter true d...
jeesite學習筆記 常見問題與解決
還需要在角色管理裡面的對應角色的角色授權新增對該選單的檢視許可權 最後重啟伺服器即可。如果在生成 時修改了com.thinkgem.jeesite以外的生成包路徑,則需要在spring mvx.xml檔案中新增這個包路徑,具體新增位置是在context component scan標籤中,按照提示新...
layuiAdmin 常見問題與解決方案
由於單頁面版本的視 件和靜態資源模組都是動態載入的,所以可能存在瀏覽器的本地快取問題,事實上我們也考慮到這個,因此,為了避免改動後的檔案未及時生效,你只需在入口頁面 預設為start index.html 中,找到layui.config,修改其version的值即可。version new dat...