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 ]
[;]