0

爲什麼在創建或更改時以下SP不會生成錯誤? 我在數據庫'AdventureWorks2014'中不存在的以下SP中使用了一個標量函數[dbo.fn_General_GetCurrentTime()]SQL server - 在創建之前檢查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 
相關問題