回答
對於SQL Server
IF EXISTS(select * FROM sys.views where name = '')
這是最便攜,最侵入性的方式:
select
count(*)
from
INFORMATION_SCHEMA.VIEWS
where
table_name = 'MyView'
and table_schema = 'MySchema'
編輯:這不工作在SQL Server上,它不要求您加入到sys.schemas
以獲取視圖的架構。如果一切都是dbo
,這並不重要,但如果您正在充分利用模式,那麼您應該牢記這一點。
每個RDBMS都有自己的檢查元數據的小方法,但information_schema
實際上是ANSI,我認爲Oracle和SQLite顯然是唯一不以某種方式支持它的。
使用sqlite:SQL錯誤:沒有這樣的表:INFORMATION_SCHEMA.VIEWS – 2009-08-20 12:59:24
@lutz:+1,因爲缺乏對SQLite的支持。 – 2009-08-21 22:50:56
如果是Oracle,您可以使用「all_views」表。
這真的取決於你的dbms。
擴大凱文的答案。
private bool CustomViewExists(string viewName)
{
using (SalesPad.Data.DataConnection dc = yourconnection)
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(String.Format(@"IF EXISTS(select * FROM sys.views where name = '{0}')
Select 1
else
Select 0", viewName));
cmd.CommandType = CommandType.Text;
return Convert.ToBoolean(dc.ExecuteScalar(cmd));
}
}
if exists (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]'))
對於Microsoft SQL Server,我覺得這是最有用的,因爲在創建模式管理腳本時經常使用IF EXISTS。在腳本中,您可能已經擁有了CREATE ViEW [dbo]。[MyView],以上是複製和粘貼的最簡單片段。 – 2014-12-02 16:53:15
如果你想檢查我最喜歡的有效性和所有你可以用下面的查詢
declare @viewName sysname
declare @cmd sysname
DECLARE check_cursor CURSOR FOR
SELECT cast('['+SCHEMA_NAME(schema_id)+'].['+name+']' as sysname) AS viewname
FROM sys.views
OPEN check_cursor
FETCH NEXT FROM check_cursor
INTO @viewName
WHILE @@FETCH_STATUS = 0
BEGIN
set @cmd='select * from '[email protected]
begin try
exec (@cmd)
end try
begin catch
print 'Error: The view '[email protected]+' is corrupted .'
end catch
FETCH NEXT FROM check_cursor
INTO @viewName
END
CLOSE check_cursor;
DEALLOCATE check_cursor;
儘管有上述規定已經很多方面現有的觀點一致,但一個不見了..
GO
IF OBJECT_ID('nView', 'V') IS NOT NULL
DROP VIEW nView;
GO
WHERE nView
在視
UPDATE 2017年3月25日:作爲@hanesjw建議用於刪除存儲過程使用P
代替V
作爲OBJECT_ID
GO
IF OBJECT_ID('nProcedure', 'P') IS NOT NULL
DROP PROCEDURE dbo.sprocName;
GO
它也接受模式。 'object_id(N'dbo.View',N'v)' – 2013-12-12 03:33:58
我喜歡這個。你也可以使用'u'作爲表格。 – 2015-10-10 22:47:54
或'P'存儲過程。 IF OBJECT_ID('dbo.sprocName','P')IS NOT NULL DROP PROCEDURE dbo.sprocName; GO – hanesjw 2016-01-29 18:45:23
對於檢查是否存在丟失的人View
使用此
從SQL Server 2016 CTP3
您可以使用新的DIE報表,而不是大IF
包裝
語法
DROP VIEW [ IF EXISTS ] [ schema_name . ] view_name [ ...,n ] [ ; ]
查詢:
DROP VIEW IF EXISTS view_name
更多信息here
在SQL Server中,
declare @ViewName nvarchar(20)='ViewNameExample'
if exists(SELECT 1 from sys.objects where object_Id=object_Id(@ViewName) and Type_Desc='VIEW')
begin
-- Your SQL Code goes here ...
end
- 1. 如何檢查數據視圖中是否存在記錄? C#
- 2. 檢查數據庫是否存在
- 3. JavaDB - 檢查數據庫是否存在
- 4. 檢查SQLite數據庫是否存在
- 5. MySQL檢查數據庫是否存在
- 6. 如何檢查在Access數據庫中是否存在記錄
- 7. 檢查數據庫中是否存在數據庫
- 8. 如何檢查圖像視圖中是否存在圖像?
- 9. 如何檢查數據庫中是否存在值對?
- 10. 如何檢查數據庫是否存在於mysql程序中
- 11. PHP:如何檢查數據庫中是否存在ID
- 12. 如何檢查數據庫中是否存在字段?
- 13. Linq - 如何檢查數據庫中是否存在對象
- 14. 如何檢查PHP數據庫中是否已經存在url?
- 15. 如何檢查Android SQLite數據庫中是否存在表?
- 16. 如何檢查數據庫中是否存在多個值?
- 17. 如何檢查數據庫表是否存在於PDO中?
- 18. 如何檢查Wordnet數據庫中是否存在單詞
- 19. 如何檢查用戶是否存在於SQL數據庫中
- 20. 如何檢查數據庫中是否存在臨時表
- 21. 如何檢查數據庫中是否存在表或列?
- 22. 如何檢查訪問數據庫中是否存在表?
- 23. 如何查詢postgreSQL數據庫來檢查值是否存在?
- 24. 如何在django視圖中檢查數據是否爲'null'?
- 25. 檢查數據庫中是否存在圖像C#windows窗體
- 26. 紅寶石檢查數據庫中是否存在數據
- 27. 如何檢查數據是否已在數據庫中存在的C#
- 28. 檢查活動是否存在視圖
- 29. 如何檢查用戶是否存在於mysql數據庫vb.net
- 30. 如何檢查數據庫記錄是否存在?
您可能還想在這裏加入'sys.schema'。 – Eric 2009-08-20 13:07:03
錯誤 - 無效的對象名稱'sys.views'。我正在查詢主數據庫 – Steam 2013-11-20 18:02:55
如果您發現此操作在CREATE和ALTER之間進行視圖決定(如我所做的那樣),這對VIEWs不起作用 - 您必須刪除VIEW *然後創建它。 IF EXISTS仍然可以正常使用,因此謝謝! :) *當你這樣做時,不要忘記任何權限。 ;) – FrostbiteXIII 2014-05-21 10:40:52