一、基本注意點
sp_executesql 的引數必須為unicode,即nchar,nvarchar,ntext型,否則報錯
如果是自己的儲存過程中有引數,也可以不用sp_executesql,直接
return 1
godeclare @name int
exec @name=demo 'test'
select @name
儲存過程demo的引數中不能有函式
,如果要傳遞乙個newid(),必須使用區域性變數
注意儲存過程的返回值必須為整形
declare @id
declare @name int
exec @name=demo @id
select @name
mssql 幫助
執行可以多次重用或動態生成的 transact-sql 語句或批處理。transact-sql 語句或批處理可以包含嵌入引數。
語法引數
n@#select * from employees where employeeid = @idparameter@#
附加引數的值的佔位符。這些值只能是常量或變數,而不能是更複雜的表示式,例如函式或使用運算子生成的表示式。
返回**值
0(成功)或 1(失敗)
結果集從生成 sql 字串的所有 sql 語句返回結果集。
例子(感謝鄒建提供)
declare @user varchar(1000)
declare @motable varchar(20)
select @motable = @#mt_10@#
declare @sql nvarchar(4000) --定義變數,注意型別
@#+@motable
--執行@sql中的語句
exec sp_executesql @sql
,n@#@user varchar(1000) out@# --表示@sql中的語句包含了乙個輸出引數
,@user out --和呼叫儲存過程差不多,指定輸出引數值
print @user
二、列名無效
因為在拼湊sql時,沒有把相應的單引號加上,char(39)可表示單引號。
例1:declare
@m_lastname
nvarchar
(declare
@sql
varchar
(set
@m_lastname='
fuller
'@sql='
select * from employees where lastname='+
char(39
) +@m_lastname
+char
(exec
( @sql)
例2: +
' and (exists(select 1
from fn_searchuser(' + cast(@pi_curuser as nvarchar(10)) + ') fn' +
' where fn.ref_userid = wrs.userid) or wrs.userid = ' + cast(@pi_curuser as nvarchar(10)) + ')'
exec sp_executesql @s,n'@count int output',@num output
SQL中拼湊SQL語句的相關注意點小結
一 基本注意點 sp executesql 的引數必須為unicode,即nchar,nvarchar,ntext型,否則報錯 動態sql語句基本語法 1 普通sql語句可以用exec執行 select from tablename exec select from tablename exec s...
使用Excel拼湊SQL語句
快速將一列多行資料合併到乙個單元格 excel如何快速將一列多行資料合併到乙個單元格,並加分隔符?這是批量處理由一線業務員統計的資料時的常用方法,尤其是當一列資料是where條件中的id時。下面給大家演示一種簡單 快捷的方法。假設資料都已經儲存到a列。開啟excel,然後按照如下三步驟操作 詳見附圖...
利用excel辦公軟體快速拼湊sql語句
日常工作中經常會收到excel整理好的部門或者人員等資料資訊並需要批量更新或者插入到資料庫中,常用的辦法有匯入 指令碼拼湊執行等,今天我介紹直接使用excel快速拼湊sql語句的方法 如 需要將表中的部門資訊批量更新到資料庫中 update flow run data set item data b...