the*_*oop 5 t-sql database stored-procedures
我想编写一个TSQL存储过程,它创建一个具有指定名称的数据库,并使用一些模式预先填充它.
所以我使用了很多EXEC语句:
EXEC('CREATE TABLE ' + @dbName + '.dbo.MyTable (...)');
Run Code Online (Sandbox Code Playgroud)
等等,与一些一起CREATE PROCEDURE,CREATE FUNCTION等等.然而,问题来自于当我想创建一个类型,CREATE TYPE语句中指定的数据库不能有,你不能USE @dbName在存储过程中.
如何在存储过程中的另一个数据库中创建类型?
小智 7
某些命令不能用作ssarabando建议使用,其中包括CREATE SCHEMA,当使用该技术时会抛出Msg 111.
解决方法是嵌套动态SQL块,如下所示:
exec('use tempdb; exec sp_executesql N''create schema test'' ')
Run Code Online (Sandbox Code Playgroud)
除了更改数据库之外,外部块不执行任何操作,因此内部块在执行时具有正确的上下文.
请注意,sp_executesql的内部参数需要两个单引号.
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |