sql >> データベース >  >> Database Tools >> SSMS

無効なオブジェクト名-ストアドプロシージャ

    私はいつもCREATEの前に付けるのが好きでした 存在を明示的にチェックし、見つかった場合は削除するステートメント。

    IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'NewQuestion' AND ROUTINE_SCHEMA = 'hgomez')
    BEGIN
        DROP PROCEDURE hgomez.NewQuestion
    END
    GO
    
    -- this is always a CREATE
    CREATE PROCEDURE [hgomez].[NewQuestion]
        (
        @QUESTIONNAME nvarchar(50),
        @QUESTION_ID int OUTPUT
        )
    
    AS
        /* SET NOCOUNT ON */
        INSERT INTO [Questions] (QuestionText) VALUES (@QUESTIONNAME)
        SET @QUESTION_ID = SCOPE_IDENTITY();
        RETURN
    

    これは権限に関して少し面倒な場合があるため、他の人はすぐにALTERするためだけにスタブメソッドを作成するアプローチを使用します

    IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'NewQuestion' AND ROUTINE_SCHEMA = 'hgomez')
    BEGIN
        EXEC ('CREATE PROCEDURE hgomez.NewQuestion AS SELECT ''stub version, to be replaced''')
    END
    GO
    
    -- This is always ALTER
    ALTER PROCEDURE [hgomez].[NewQuestion]
        (
        @QUESTIONNAME nvarchar(50),
        @QUESTION_ID int OUTPUT
        )
    
    AS
        /* SET NOCOUNT ON */
        INSERT INTO [Questions] (QuestionText) VALUES (@QUESTIONNAME)
        SET @QUESTION_ID = SCOPE_IDENTITY();
        RETURN
    


    1. DockerMYSQL'[2006]MySQLサーバーがなくなりました'

    2. phpMyAdminを使用してデータベーステーブルのフィールドを変更する

    3. mampでphpmyadminにアクセスする

    4. 文字と数字でID番号を自動インクリメントする方法