বিকাশকারী এবং সহযোগী ডিবিএর সুবিধার জন্য এখানে কেবল যুক্ত করা হচ্ছে
একটি স্ক্রিপ্ট যা পরামিতি হিসাবে @ টেবিলনামটি গ্রহণ করে
(যার মধ্যে স্কিমেনেম থাকতে পারে এবং নাও থাকতে পারে) এবং স্কিমা.ট্যাব উপস্থিত থাকলে নীচের তথ্যটি প্রদান করে:
the_name object_id the_schema the_table the_type
[Facts].[FactBackOrder] 758293761 Facts FactBackOrder Table
আমি এই স্ক্রিপ্টটি অন্য স্ক্রিপ্টগুলির অভ্যন্তরে ব্যবহারের জন্য তৈরি করেছি যখনই আমার টেবিলে বা ভিউ রয়েছে কি না তা পরীক্ষা করে দেখার দরকার হয় এবং যখন এটি হয় তখন এর উদ্দেশ্য_আইডটিকে অন্য উদ্দেশ্যে ব্যবহার করার জন্য পেতে পারি।
আপনি খালি স্ট্রিং, ভুল স্কিমা নাম বা ভুল সারণীর নাম পাস করলে এটি একটি ত্রুটি উত্থাপন করে।
এটি কোনও পদ্ধতির অভ্যন্তরে থাকতে পারে এবং উদাহরণস্বরূপ -1 ফেরত যেতে পারে।
উদাহরণ হিসাবে, আমার একটি ডেটা গুদাম ডাটাবেসে "Facts.FactBackOrder" নামে একটি টেবিল রয়েছে table
এইভাবেই আমি এটি অর্জন করেছি:
PRINT 'THE SERVER IS ' + @@SERVERNAME
--select db_name()
PRINT 'THE DATABASE IS ' + db_NAME()
PRINT ''
GO
SET NOCOUNT ON
GO
--===================================================================================
-- @TableName is the parameter
-- the object we want to deal with (it might be an indexed view or a table)
-- the schema might or might not be specified
-- when not specified it is DBO
--===================================================================================
DECLARE @TableName SYSNAME
SELECT @TableName = 'Facts.FactBackOrder'
--===================================================================================
--===================================================================================
DECLARE @Schema SYSNAME
DECLARE @I INT
DECLARE @Z INT
SELECT @TableName = LTRIM(RTRIM(@TableName))
SELECT @Z = LEN(@TableName)
IF (@Z = 0) BEGIN
RAISERROR('Invalid @Tablename passed.',16,1)
END
SELECT @I = CHARINDEX('.',@TableName )
--SELECT @TableName ,@I
IF @I > 0 BEGIN
--===================================================================================
-- a schema and table name have been passed
-- example Facts.FactBackOrder
-- @Schema = Fact
-- @TableName = FactBackOrder
--===================================================================================
SELECT @Schema = SUBSTRING(@TABLENAME,1,@I-1)
SELECT @TableName = SUBSTRING(@TABLENAME,@I+1,@Z-@I)
END
ELSE BEGIN
--===================================================================================
-- just a table name have been passed
-- so the schema will be dbo
-- example Orders
-- @Schema = dbo
-- @TableName = Orders
--===================================================================================
SELECT @Schema = 'DBO'
END
--===================================================================================
-- Check whether the @SchemaName is valid in the current database
--===================================================================================
IF NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.SCHEMATA K WHERE K.[SCHEMA_NAME] = @Schema ) BEGIN
RAISERROR('Invalid Schema Name.',16,1)
END
--SELECT @Schema as [@Schema]
-- ,@TableName as [@TableName]
DECLARE @R1 TABLE (
THE_NAME SYSNAME
,THE_SCHEMA SYSNAME
,THE_TABLE SYSNAME
,OBJECT_ID INT
,THE_TYPE SYSNAME
,PRIMARY KEY CLUSTERED (THE_SCHEMA,THE_NAME)
)
;WITH RADHE_01 AS (
SELECT QUOTENAME(SCHEMA_NAME(O.schema_id)) + '.' + QUOTENAME(O.NAME) AS [the_name]
,the_schema=SCHEMA_NAME(O.schema_id)
,the_table=O.NAME
,object_id =o.object_id
,[the_type]= CASE WHEN O.TYPE = 'U' THEN 'Table' ELSE 'View' END
from sys.objects O
where O.is_ms_shipped = 0
AND O.TYPE IN ('U','V')
)
INSERT INTO @R1 (
THE_NAME
,THE_SCHEMA
,THE_TABLE
,OBJECT_ID
,THE_TYPE
)
SELECT the_name
,the_schema
,the_table
,object_id
,the_type
FROM RADHE_01
WHERE the_schema = @Schema
AND the_table = @TableName
IF (@@ROWCOUNT = 0) BEGIN
RAISERROR('Invalid Table Name.',16,1)
END
ELSE BEGIN
SELECT THE_NAME
,THE_SCHEMA
,THE_TABLE
,OBJECT_ID
,THE_TYPE
FROM @R1
END