SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Nieprawidłowa nazwa obiektu — procedura składowana

Byłem fanem zawsze poprzedzającego moje CREATE oświadczenia z wyraźnym sprawdzeniem istnienia i porzuceniem, jeśli zostały znalezione.

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

Może to być trochę kłopotliwe w odniesieniu do uprawnień, więc inni używają podejścia, w którym tworzą metodę skrótową tylko po to, aby natychmiast ALTER to.

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. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak mogę sprawdzić, gdzie znajdują się tabulatory w edytorze SQL Server Management Studio?

  2. Jak wygenerować skrypty do odtworzenia tabeli za pomocą SQL Server Management Studio [Schema i dane]?

  3. SQL Server 2008 — dołącz plik mdf bez dziennika — błąd systemu operacyjnego 5:5 (odmowa dostępu).

  4. Korzystanie z tabeli zaraz po jej utworzeniu:obiekt nie istnieje

  5. Gdzie jest SQL Server Management Studio 2012?