2010-04-28 87 views
0

如何使用ADO.Net檢查存儲過程是否存在?有沒有一個特定的方法來做到這一點(除執行SELECT OBJECT_ID()和檢查結果)?檢查存儲過程是否存在於ADO.Net中?

+0

我猜唯一的辦法就是查詢SysObject,但出於好奇,你能否解釋爲什麼你需要做這個檢查?你是否打算創建一個sproc,如果它不存在? – 2010-04-28 03:00:53

回答

3

可以使用INFORMATION_SCHEMA意見,像這樣:

Select * 
From INFORMATION_SCHEMA.ROUTINES 
Where ROUTINE_NAME = '<your procedure name>' 
+0

ADO.Net中是否有預定義的方法來執行此操作? – 2010-05-02 11:25:03

+0

@HeavyWire - 不,沒有內置方法來確定ADO.NET是否存在存儲過程。您必須構建一個針對SQL Server調用的查詢來確定過程是否存在。 – Thomas 2010-05-02 13:59:43

0

如果你詢問是否有檢查,而無需使用任何SQL可言,那麼答案是否定的一種方式。

如果你真的想要一個純代碼的解決方案,那麼你可以使用SQL Management Objects,但這是一個非常重要的依賴項,只是爲了檢查存儲過程的存在而添加 - 而且它只是在後臺發出SQL。

最好如果您只是使用SqlCommand

0

或者,如果你不關心秉承SQL標準結構(INFORMATION_SCHEMA),你可以使用內置的SQL Server系統目錄視圖(2005年及以上),以檢查:

SELECT object_id, name 
FROM sys.procedures 
WHERE name = 'your-procedure-name-here'