বর্তমান নির্বাহী পদ্ধতির নাম


98

এমএস এসকিউএল সার্ভারে বর্তমান সঞ্চিত প্রক্রিয়াটির নাম পাওয়া সম্ভব?

হয়তো এর মতো সিস্টেম ভেরিয়েবল বা ফাংশন থাকতে পারে GETDATE()?

উত্তর:


148

আপনি এটি চেষ্টা করতে পারেন:

SELECT OBJECT_NAME(@@PROCID)

আপডেট: এই কমান্ডটি এখনও এসকিউএল সার্ভার 2016-তে বৈধ।


4
এটি লক্ষণীয় যে প্রত্যাবর্তিত মানটি টাইপ SYSNAME।
বাগিগিবিয়

প্রক্রিয়া নয় প্রক্রিয়া জন্য কি করবেন? কোন ধারণা? দয়া করে সহায়তা করুন
বিনয় সিনহা

4
এসকিউএল পরিবেশন 2012 তে এখনও বৈধ
পিমেন্টা

4
এখনও এসকিউএল সার্ভারে বৈধ 2016
এফকা

সেশন বা বিশ্বব্যাপী অস্থায়ী সঞ্চিত প্রক্রিয়াগুলির জন্য কাজ করে না।
আজিহ

81
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)

4
যদি আপনি এটি কোনও অস্থায়ী প্রকের অভ্যন্তরে ব্যবহার করেন তবে এটি স্কিমা নাম পুনরুদ্ধারের সাথে বা ছাড়াই NULL প্রদান করে। 1 ম 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
প্রচারটি

15

আপনি ওবিজেইসিআইএইচএইপি ব্যবহার করতে পারেন (@@ প্রোসিড)

বর্তমান লেনদেন-এসকিউএল মডিউলটির অবজেক্ট আইডেন্টিফায়ার (আইডি) প্রদান করে। একটি লেনদেন-এসকিউএল মডিউলটি কোনও সঞ্চিত পদ্ধতি, ব্যবহারকারী-সংজ্ঞায়িত ফাংশন বা ট্রিগার হতে পারে।


7

আপনি বর্তমানে যে অস্থায়ী সঞ্চিত প্রক্রিয়া চালাচ্ছেন তার নামের ক্ষেত্রে আপনি আগ্রহী সেই নির্দিষ্ট ক্ষেত্রে , আপনি এটি মাধ্যমে পেতে পারেন:

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)

কনফার্মেশন মোড (ডাবল ##) এর সাথে 2008R2 এর সামঞ্জস্যতা মোডে 2008 এন্টারপ্রাইজ 2014 এ পরীক্ষা করা যাবে, নিশ্চিত হতে পারে
ইলাস্কানেটর

4
সত্যটি ছাড়াও, এটি সঠিক: কে অস্থায়ী পদ্ধতি তৈরি করবে ?? :-D
তারেক সালহা

0

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;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.