Execute語句最普通的用法就是執行預存程序。但他還有更強大、更廣泛的使用方法。
1.執行預存程序
預存程序名 支援 對象四部分名稱 可以是:字面值 、 變數
傳遞的參數 可以使用 :字面值、變數、default值;input 或 output
能夠擷取預存程序的 return 傳回值,如果預存程序 沒有return 語句,返回0! 如果預存程序 return 其他類型、其他值,則必須是 可以轉換為int類型的值!
可以執行同系列的預存程序
在執行時 強制 重新編譯預存程序:with recompile
2.執行函數
與執行 預存程序 類似。
必須注意:此時函數的調用不能有括弧了()!
能夠擷取 函數 的任何 標量 傳回型別和值,標量!
3.執行動態sql字串
execute 語句 必須帶有括弧()
sql字串可以是任何有效sql字串:字面值、變數
可以變更 執行 上下文 : as {login | user} = 'name'
4.pass-throug 字串:該功能,使得execute 極其方便、強大!!!!!!!!!!!!!!!!!!!!!!!!!
和動態sql字串類似,只是字串內可以帶有“?”表示可以互相傳遞的變數。
替換變數可以是:字面值、變數。如是“?output”是 output 類型的,則替換變數必須是 變數
sqlsever2005以後,可以在串連伺服器上執行!
execute 文法
Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH RECOMPILE ]
}
[;]
Execute a character string
{ EXEC | EXECUTE }
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } = ' name ' ]
[;]
Execute a pass-through command against a linked server
{ EXEC | EXECUTE }
( { @string_variable | [ N ] 'command_string' } [ + ...n ]
[ {, { value | @variable [ OUTPUT ] } } [...n] ]
)
[ AS { LOGIN | USER } = ' name ' ]
[ AT linked_server_name ]
[;]