Rza*_*sar 3 sql-server t-sql ddl
我正在使用 sqlserver 2014 并尝试创建一个StoredProcedure
像这样的内部 try-catch 块:
BEGIN TRY
CREATE PROCEDURE [ammeghezi1] (@w INT) AS SELECT ''
END TRY
BEGIN CATCH
...
END CATCH
Run Code Online (Sandbox Code Playgroud)
它无法运行并出现以下错误:Incorrect syntax near 'SELECT' Expecting EXTERNAL.
然后我更改了 sp 如下:(CREATE PROCEDURE [ammeghezi1] (@w INT) AS BEGIN SELECT '' END
用 BEGIN-END 块覆盖 sp),但错误没有改变。我还添加了GO
afterBEGIN TRY
声明,结果变得最糟。
我得出的结论是,sp
在TRY_CATCH
块内创建是不切实际的。
这甚至可以sp
在TRY_CATCH
块内创建吗?如何?
CREATE PROCEDURE 语句不能在一个批处理中与其他 Transact-SQL 语句组合使用。
如果您需要 try/catch,则需要使用动态 SQL 执行 DDL,以便它位于单独的批处理中:
BEGIN TRY
DECLARE @CreateProcedureStatement nvarchar(MAX) =
N'CREATE PROCEDURE [ammeghezi1] (@w INT) AS SELECT ''''';
EXEC sp_executesql @CreateProcedureStatement;
END TRY
BEGIN CATCH
THROW;
END CATCH
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3526 次 |
最近记录: |