0

作成または変更時にSPに続くエラーが発生しないのはなぜですか? データベース 'AdventureWorks2014'に存在しない次のSPにスカラー関数[dbo.fn_General_GetCurrentTime()]を使用しました。SQLサーバー - 作成前にSPにオブジェクトが存在していないかチェック

エラーを出すかどうかはわかりません。 オブジェクトの存在を確認する方法はありますか?

USE [AdventureWorks2014] 
GO 

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

Create PROCEDURE [dbo].[SP_Zee_Test] 
    @ID int 
AS 
BEGIN 
    Declare @DateC DateTime 

    Set @DateC = dbo.fn_General_GetCurrentTime() --this function is not exists in database 
END 

GO 
+0

人々は、繰延名前解決、いつでもすぐに実装されて何の兆候を無効にするいくつかの方法のために何十年もの間求めてきました。それは「機能」です。 –

答えて

0

メタデータテーブルを使用してオブジェクトがデータベースに存在するかどうかを確認できます。ストアドプロシージャと関数のためには、テーブルINFORMATION_SCHEMA.ROUTINESを使用することができます。

--check if a stored procedure exists 
if exists (SELECT 1 from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE ='PROCEDURE' and ROUTINE_SCHEMA='yourSpSchema' and ROUTINE_NAME='yourSpName') 
    begin 
     --the stored procedure exists 
    end 
else 
    begin 
     --the stored procedure does not exist 
    end 

--check if a function exists 
if exists (SELECT 1 from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE ='FUNCTION' and ROUTINE_SCHEMA='yourFxSchema' and ROUTINE_NAME='yourFxName') 
    begin 
     --the function exists 
    end 
else 
    begin 
     --the function does not exist 
    end 
関連する問題