1

我有一个 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
4

1 回答 1

0

我可以考虑两种情况为什么会发生这种情况:

  1. SD_CreateAllViewStatements调用之前的主脚本崩溃。您可以添加简单的try ... catch构造来避免 SPAddField崩溃。
  2. 你有一个return声明if ... begin ... end blocks需要删除(或SPAddField需要重新设计)

在这两种情况下,脚本基本上都不会执行对SD_CreateAllViewStatements. SD_CreateAllViewStatements在所有其他情况下,必须执行SP 。

于 2013-10-30T10:18:10.923 回答