এমএস এসকিউএল সার্ভারে বর্তমান সঞ্চিত প্রক্রিয়াটির নাম পাওয়া সম্ভব?
হয়তো এর মতো সিস্টেম ভেরিয়েবল বা ফাংশন থাকতে পারে GETDATE()
?
এমএস এসকিউএল সার্ভারে বর্তমান সঞ্চিত প্রক্রিয়াটির নাম পাওয়া সম্ভব?
হয়তো এর মতো সিস্টেম ভেরিয়েবল বা ফাংশন থাকতে পারে GETDATE()
?
উত্তর:
আপনি এটি চেষ্টা করতে পারেন:
SELECT OBJECT_NAME(@@PROCID)
আপডেট: এই কমান্ডটি এখনও এসকিউএল সার্ভার 2016-তে বৈধ।
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
BEGIN TRAN GO CREATE PROC utility.TempProc AS SELECT OBJECT_SCHEMA_NAME(@@PROCID)+'.'+OBJECT_NAME(@@PROCID) GO EXEC utility.TempProc GO ROLLBACK GO BEGIN TRAN GO CREATE PROC utility.#TempProc AS SELECT OBJECT_SCHEMA_NAME(@@PROCID)+'.'+OBJECT_NAME(@@PROCID) GO EXEC utility.#TempProc GO ROLLBACK GO
আপনি ওবিজেইসিআইএইচএইপি ব্যবহার করতে পারেন (@@ প্রোসিড)
বর্তমান লেনদেন-এসকিউএল মডিউলটির অবজেক্ট আইডেন্টিফায়ার (আইডি) প্রদান করে। একটি লেনদেন-এসকিউএল মডিউলটি কোনও সঞ্চিত পদ্ধতি, ব্যবহারকারী-সংজ্ঞায়িত ফাংশন বা ট্রিগার হতে পারে।
আপনি বর্তমানে যে অস্থায়ী সঞ্চিত প্রক্রিয়া চালাচ্ছেন তার নামের ক্ষেত্রে আপনি আগ্রহী সেই নির্দিষ্ট ক্ষেত্রে , আপনি এটি মাধ্যমে পেতে পারেন:
select name
from tempdb.sys.procedures
where object_id = @@procid
আপনি বর্তমানে কার্যকর করা অস্থায়ী সঞ্চিত প্রক্রিয়াটির নাম খুঁজতে এসকিউএল সার্ভারে গৃহীত উত্তরটি ব্যবহার করতে পারবেন না:
create procedure #p
as
select object_name(@@PROCID) as name
go
exec #p
name
--------------------------------------------------------------------------------------------------------------------------------
NULL
(1 row affected)
NULL
সঞ্চিত পদ্ধতির স্কিমা এবং নাম পাওয়ার আগে আপনি যাচাই করতে পারেন ।
এর অর্থ হ'ল আপনি (গ্লোবাল) অস্থায়ী সঞ্চিত প্রক্রিয়াগুলির জন্যও সঠিক ডেটা পেতে পারেন (আরও বড় করতে ছবিতে ক্লিক করুন):
USE [master]; --so we can test temp sprocs without cheating by being in tempdb.
GO
BEGIN TRAN;
GO
CREATE PROC dbo.NotTempProc
AS
BEGIN
SELECT CASE
WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
END AS ProcName;
END
GO
EXEC dbo.NotTempProc;
GO
CREATE PROC dbo.#TempProc
AS
BEGIN
SELECT CASE
WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
END AS ProcName;
END
GO
EXEC dbo.#TempProc;
GO
CREATE PROC dbo.##GlobalTempProc
AS
BEGIN
SELECT CASE
WHEN OBJECT_SCHEMA_NAME(@@PROCID) IS NULL
THEN OBJECT_SCHEMA_NAME(@@PROCID, 2) + N'.' + OBJECT_NAME(@@PROCID, 2)
ELSE OBJECT_SCHEMA_NAME(@@PROCID) + N'.' + OBJECT_NAME(@@PROCID)
END AS ProcName;
END
GO
EXEC dbo.##GlobalTempProc;
GO
ROLLBACK;