Dra*_*aco 122 sql database sql-server stored-procedures view
如果数据库中存在某个View,我需要执行一些SQL代码.我如何检查View是否存在?
编辑:正在使用的DBMS是Microsoft SQL Server
kem*_*002 154
FOR SQL SERVER
IF EXISTS(select * FROM sys.views where name = '')
Run Code Online (Sandbox Code Playgroud)
zzl*_*ani 133
上面已经指出了很多方法,但我最喜欢的方法之一就是丢失了......
GO
IF OBJECT_ID('nView', 'V') IS NOT NULL
DROP VIEW nView;
GO
Run Code Online (Sandbox Code Playgroud)
WHERE nView是视图的名称
更新2017-03-25:正如@hanesjw建议删除Store Procedure使用P而不是V作为第二个参数OBJECT_ID
GO
IF OBJECT_ID( 'nProcedure', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.sprocName;
GO
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 52
这是最便携,最少侵入性的方式:
select
count(*)
from
INFORMATION_SCHEMA.VIEWS
where
table_name = 'MyView'
and table_schema = 'MySchema'
Run Code Online (Sandbox Code Playgroud)
编辑:这适用于SQL Server,它不需要您加入sys.schemas以获取视图的架构.如果一切都是这样dbo,那就不那么重要了,但是如果你正在好好利用模式,那么你应该牢记这一点.
每个RDBMS都有自己的方法来检查这样的元数据,但information_schema实际上是ANSI,我认为Oracle和显然SQLite是唯一不支持它的方式.
小智 17
if exists (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') )
Run Code Online (Sandbox Code Playgroud)
Pரத*_*ீப் 14
对于检查存在的人来说,请View使用此功能
从SQL Server 2016 CTP3您可以使用新的DIE 语句而不是大IF包装器
句法
DROP VIEW [IF EXISTS] [schema_name.] view_name [...,n] [; ]
查询:
DROP VIEW IF EXISTS view_name
Run Code Online (Sandbox Code Playgroud)
更多信息在这里
您可以通过多种方式检查视图的可用性
对于 SQL 服务器
使用系统对象
IF EXISTS(
SELECT 1
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID('[schemaName].[ViewName]')
AND Type_Desc = 'VIEW'
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
使用系统对象
IF NOT EXISTS (
SELECT 1
FROM sysobjects
WHERE NAME = '[schemaName].[ViewName]'
AND xtype = 'V'
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
使用系统视图
IF EXISTS (
SELECT 1
FROM sys.views
WHERE OBJECT_ID = OBJECT_ID(N'[schemaName].[ViewName]')
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
使用INFORMATION_SCHEMA.VIEWS
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'ViewName'
AND table_schema = 'schemaName'
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
使用OBJECT_ID
IF EXISTS(
SELECT OBJECT_ID('ViewName', 'V')
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
使用sys.sql_modules
IF EXISTS (
SELECT 1
FROM sys.sql_modules
WHERE OBJECT_ID = OBJECT_ID('[schemaName].[ViewName]')
)
BEGIN
PRINT 'View Exists'
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
163599 次 |
| 最近记录: |