SSMS
 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. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Създайте скрипт за вмъкване от избрани резултати

  2. Sql Server Management Studio Object Explorer изчезна - липсва - изчезна

  3. Грешка в SQL Server Management Studio:Неуспешен скрипт за UserDefinedFunction

  4. Разделяне на стойности, разделени със запетая

  5. Резултатите от копиране и поставяне на Microsoft SQL Server в Excel не работят