উত্তর:
এসকিউএল সার্ভারের জন্য
IF EXISTS(select * FROM sys.views where name = '')
ইতিমধ্যে উপরে উল্লিখিত অনেকগুলি উপায় রয়েছে তবে আমার প্রিয় একটি অনুপস্থিত ..
GO
IF OBJECT_ID('nView', 'V') IS NOT NULL
DROP VIEW nView;
GO
nView
দেখার নাম যেখানে
আপডেট ২০১ 2017-০৩-২৫ : যেমন @hanesjw এর দ্বিতীয় যুক্তির P
পরিবর্তে স্টোর প্রক্রিয়া ব্যবহার বাদ দেওয়ার পরামর্শ দিয়েছিলV
OBJECT_ID
GO
IF OBJECT_ID( 'nProcedure', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.sprocName;
GO
এটি সর্বাধিক বহনযোগ্য, অন্তত অনুপ্রবেশমূলক উপায়:
select
count(*)
from
INFORMATION_SCHEMA.VIEWS
where
table_name = 'MyView'
and table_schema = 'MySchema'
সম্পাদনা করুন: এটি এসকিউএল সার্ভারে কাজ করে, এবং sys.schemas
দৃশ্যের স্কিমা পেতে আপনাকে যোগদানের প্রয়োজন হয় না । সবকিছু থাকলে এটি কম গুরুত্বপূর্ণdbo
আপনি যদি স্কিমার ভাল ব্যবহার করছেন তবে আপনার এটি মনে রাখা উচিত।
প্রতিটি আরডিবিএমএস এর মতো মেটাডেটা যাচাই করার নিজস্ব সামান্য উপায় রয়েছে তবে information_schema
এটি আসলে এএনএসআই এবং আমি মনে করি ওরাকল এবং স্পষ্টতই এসকিউএলাইটই কেবল এটি কোনও ফ্যাশনে সমর্থন করে না।
if exists (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') )
যদি এটি ওরাকল হয় তবে আপনি "সমস্ত_দর্শন" টেবিলটি ব্যবহার করবেন।
এটি সত্যিই আপনার ডিবিএমের উপর নির্ভর করে।
আপনি যদি বিদ্যমান বিদ্যমান সমস্ত দর্শনগুলির বৈধতা এবং ধারাবাহিকতা পরীক্ষা করতে চান তবে নীচের কোয়েরিটি ব্যবহার করতে পারেন
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 '+@viewName
begin try
exec (@cmd)
end try
begin catch
print 'Error: The view '+@viewName+' is corrupted .'
end catch
FETCH NEXT FROM check_cursor
INTO @viewName
END
CLOSE check_cursor;
DEALLOCATE check_cursor;
কেভিনের উত্তরে প্রসারিত করা।
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));
}
}
আপনি বিভিন্ন উপায়ে ভিউটির প্রাপ্যতা পরীক্ষা করতে পারেন
এসকিউএল সার্ভারের জন্য
sys.objects ব্যবহার করুন
IF EXISTS(
SELECT 1
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID('[schemaName].[ViewName]')
AND Type_Desc = 'VIEW'
)
BEGIN
PRINT 'View Exists'
END
সিসোবজেক্টগুলি ব্যবহার করুন
IF NOT EXISTS (
SELECT 1
FROM sysobjects
WHERE NAME = '[schemaName].[ViewName]'
AND xtype = 'V'
)
BEGIN
PRINT 'View Exists'
END
sys.views ব্যবহার করুন
IF EXISTS (
SELECT 1
FROM sys.views
WHERE OBJECT_ID = OBJECT_ID(N'[schemaName].[ViewName]')
)
BEGIN
PRINT 'View Exists'
END
INFORMATION_SCHEMA.VIEWS ব্যবহার করুন
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.VIEWS
WHERE table_name = 'ViewName'
AND table_schema = 'schemaName'
)
BEGIN
PRINT 'View Exists'
END
OBJECT_ID ব্যবহার করুন
IF EXISTS(
SELECT OBJECT_ID('ViewName', 'V')
)
BEGIN
PRINT 'View Exists'
END
sys.sql_modules ব্যবহার করুন
IF EXISTS (
SELECT 1
FROM sys.sql_modules
WHERE OBJECT_ID = OBJECT_ID('[schemaName].[ViewName]')
)
BEGIN
PRINT 'View Exists'
END
sys.schema
এখানে যোগদান করতে চান ।