SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Nama Objek Tidak Valid - Prosedur Tersimpan

Saya adalah penggemar untuk selalu menambahkan CREATE my saya pernyataan dengan pemeriksaan eksplisit untuk keberadaan dan menjatuhkan jika ditemukan.

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

Itu bisa sedikit merepotkan sehubungan dengan izin sehingga orang lain menggunakan pendekatan di mana mereka membuat metode rintisan hanya untuk segera ALTER itu.

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. Cara menampilkan nilai di Col3 di mana nilai Col1 benar dan untuk nilai salah di Col1 tunjukkan NULL di Col3 saja

  2. Apa perbedaan antara SQL Server Management Studio dan edisi Express?

  3. ciutkan semua' atau alihkan garis besar di SQL Server Management Studio 2008

  4. Bagaimana saya bisa memprogram pintasan keyboard untuk memilih 1000* teratas dari tabel yang dipilih?

  5. Bagaimana Anda men-debug atau menelusuri kode di SQL Server Management Studio 18?