我有一个SQL Server存储过程,但是当它执行时,似乎没有执行我想要调用的其他存储过程。
这是我的存储过程示例,您可以看到我的EXEC
语句。
如果有人能够理解为什么这不起作用那么请告诉我!感谢
ALTER PROCEDURE [dbo].[AddField]
@tablename nvarchar(20),
@newfield nvarchar(20),
@datatype nvarchar(20),
@length nvarchar(20),
@displayname nvarchar(20),
@tableseq nvarchar(20),
@varcharmax nvarchar(20),
@SEQ_PARENT nvarchar(20),
@FK_MODULE_VIEW nvarchar(20),
@FK_MODULE_VAL nvarchar(20)
AS
BEGIN
DECLARE @p_tablename varchar(20),
@type varchar(20),
@FK_SQL_DATA nvarchar(max),
@FK_TABLE_NAME varchar(20),
@ALTER_TABLE_SQL nvarchar(max),
@ALTER_TABLE_SQL_ADD_FK nvarchar(max),
@FIELD_REF_SQL_DATA nvarchar(max)
SELECT @p_tablename = TABLENAME FROM SD_TABLES WHERE VIEWNAME = @tablename
SET @type = @datatype + @length
if @datatype = 'TEST1'
BEGIN
--SQL HERE
END
if @datatype = 'TEST2'
BEGIN
--SQL HERE
END
if @datatype = 'TEST3'
BEGIN
--SQL HERE
END
EXEC SD_CreateAllViewStatements
END
答案 0 :(得分:0)
我可以考虑两种情况,为什么会发生这种情况:
SD_CreateAllViewStatements
之前崩溃的主脚本。您可以添加简单的try ... catch
构造,以避免SP AddField
崩溃。return
中的if ... begin ... end blocks
声明需要删除(或者SP AddField
需要重新设计)在这两种情况下,脚本基本上都不会执行对SD_CreateAllViewStatements
的调用。在所有其他情况下,必须执行SP SD_CreateAllViewStatements
。