এমএস এসকিউএল সার্ভারে বর্তমান সঞ্চিত প্রক্রিয়াটির নাম পাওয়া সম্ভব?
হয়তো এর মতো সিস্টেম ভেরিয়েবল বা ফাংশন থাকতে পারে 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;