我完全难过了.我有以下块:
IF NOT EXISTS(SELECT * FROM sys.schemas WHERE name = 'Test')
BEGIN
CREATE SCHEMA Test;
END;
Run Code Online (Sandbox Code Playgroud)
如果我针对我们的SQL Server 2008运行此操作,我会在关键字'SCHEMA'附近获得"消息156,级别15,状态1,行3:不正确的语法",但如果我CREATE SCHEMA单独运行该命令,则可以正常工作.
此外,这有效:
IF NOT EXISTS(SELECT * FROM sys.schemas WHERE name = 'Test')
BEGIN
PRINT 'CREATE GOES HERE';
END;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
gve*_*vee 19
错误消息在这里有点红色鲱鱼....执行以下操作以查看"真正的"错误是什么:
SELECT * FROM sys.schemas
CREATE SCHEMA Test
Run Code Online (Sandbox Code Playgroud)
Msg 111,Level 15,State 1,Line 2
'CREATE SCHEMA'必须是查询批处理中的第一个语句.
要解决此问题,您可以使用以下EXEC功能:
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Test')
BEGIN
EXEC ('CREATE SCHEMA Test;');
END;
Run Code Online (Sandbox Code Playgroud)
如果您需要在另一个数据库而不是当前上下文中创建模式,您应该运行以下脚本。
set @myScript = 'exec '+ QUOTENAME(@DBName) + '..sp_executesql N''create schema MySchema''' 执行(@myScript)
试试这个——
IF NOT EXISTS(SELECT 1 FROM sys.schemas WHERE name = 'Test')
BEGIN
EXEC sys.sp_executesql N'CREATE SCHEMA Test;'
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8401 次 |
| 最近记录: |