SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Tên đối tượng không hợp lệ - Thủ tục được lưu trữ

Tôi là người thích luôn viết trước CREATE của mình báo cáo với một kiểm tra rõ ràng về sự tồn tại và loại bỏ nếu nó được tìm thấy.

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

Điều đó có thể hơi phức tạp liên quan đến quyền vì vậy những người khác sử dụng cách tiếp cận trong đó họ chỉ tạo một phương thức sơ khai để ngay lập tức ALTER nó.

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. SSMS Object Explorer - Chọn N hàng trên cùng bị thiếu khi kết nối với Azure DB

  2. Mất IntelliSense trong SQL Server Management Studio

  3. Cách xem mã thủ tục được lưu trữ trong SQL Server Management Studio

  4. Di chuyển cơ sở dữ liệu SQL với SSMS

  5. Lưu kết quả với tiêu đề trong Sql Server Management Studio