sql server 獲取動態sql輸出結果

2021-09-09 02:46:28 字數 1699 閱讀 3688

不帶輸出結果 我們一般會這樣寫

例子:乙個輸出6位遞增號碼結果

alter

proc

getcode

@tbvarchar(50

),@tag

varchar(50)as

declare

@sqlstring

nvarchar(max)

set@sqlstring='

select

'''+

@tag

+'''

+right(1000001+isnull(right(max(fcode),6),0),6) from '+

@tb--

print @sqlstring

exec (@sqlstring

)go

但是如果儲存過程需要和其他過程繼續運算,我需要把結果放到乙個變數,這個時候 就需sql內建 儲存過程寫法 

先看看語法:

sp_executesql [ @stmt = ] stmt [   ]

然後我們來改造

(用法解釋 : 我們需要把結果放入@temp, 然後 在 sp_executesql 中聲名 @temp的型別 後面把output的變數放後面 , 這樣 temp 的值就會賦給 outvalue 裡面了)

例子:

create

procedure

getcodebyout

@tbvarchar(50

),@tag

varchar(50

),@outvalue

varchar(50

) output

asdeclare

@sqls

nvarchar(4000

) set

@sqls='

select @temp=

'''+

@tag

+'''

+right(1000001+isnull(right(max(fcode),6),0),6) from '+

@tbexec sp_executesql @sqls,n'

@temp varchar(50) output

',@outvalue output

呼叫

declare

@username

varchar(50

) exec getcodebyout '

t_car

','hb

',@username

output

select

@username

如果有多個輸出引數 同理依次聲名即可

declare

@num

int, @sqls

nvarchar(4000) ,@sname

char(10

)set

@sqls='

select @a=sno,@b=sname from aa

'exec sp_executesql @sqls,n'

@a int output,@b char(10) output

',@num output,@sname

output

select

@num

select

@sname

SQL Server迴圈查詢資料或執行SQL

直接上sql,此實力 適用於修改資料 宣告變數 declare i int declare max int declare groupid int declare userid int set i 1 select max max id from tpersonneltable while i ma...

sql server 2008匯入和匯出sql檔案

匯出表資料和表結構sql檔案 在日常的開發過程中,經常需要匯出某個資料庫中,某些表資料 或者,需要對某個表的結構,資料進行修改的時候,就需要在資料庫中匯出表的sql結構,包括該錶的建表語句和資料儲存語句!在這個時候,就可以利用本方法來操作!步驟閱讀 1開啟sqlserver2008,連線成功後,選擇...

檢視SQLServer最耗資源時間的SQL語句

執行最慢的sql語句 select total elapsed time execution count 1000 n 平均時間ms total elapsed time 1000 n 總花費時間ms total worker time 1000 n 所用的cpu總時間ms total physic...