SQL Server存储过程不执行另一个SP

时间:2013-10-30 09:37:09

标签: sql-server

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

1 个答案:

答案 0 :(得分:0)

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

  1. 调用SD_CreateAllViewStatements之前崩溃的主脚本。您可以添加简单的try ... catch构造,以避免SP AddField崩溃。
  2. return中的if ... begin ... end blocks声明需要删除(或者SP AddField需要重新设计)
  3. 在这两种情况下,脚本基本上都不会执行对SD_CreateAllViewStatements的调用。在所有其他情况下,必须执行SP SD_CreateAllViewStatements