Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL Server 2008 में संग्रहीत कार्यविधि में डायनामिक पैरामीटर पास करना

यह वास्तव में स्पष्ट नहीं है कि आपकी रैपर प्रक्रिया का बिंदु क्या है (ऑडिटिंग? डिबगिंग?), और यह एक बहुत ही अजीब समाधान की तरह लगता है। यदि आप समझाते हैं कि आप ऐसा क्यों करना चाहते हैं, तो किसी के पास पूरी तरह से अलग और उम्मीद से बेहतर समाधान हो सकता है।

आपके प्रस्ताव के साथ सबसे बड़ी समस्या यह है कि आप केवल पैरामीटर को स्ट्रिंग्स के रूप में पास कर सकते हैं और इसका मतलब है कि आपको डायनामिक एसक्यूएल . अपने कॉलिंग कोड से सही ढंग से टाइप किए गए पैरामीटर को पास करते हुए, प्रत्येक प्रक्रिया को सीधे कॉल करना बेहतर होगा।

इतना सब कह कर अगर आप वाकई इसे करना चाहते हैं तो आप कुछ इस तरह कर सकते हैं:

create proc dbo.ExecuteProcedure
    @ProcedureName sysname,
    @Parameters nvarchar(max),
    @Debug bit = 0x0,
    @Execute bit = 0x1
as
set nocount on
begin

declare @sql nvarchar(max)
set @sql = 'exec ' + quotename(@ProcedureName) + ' ' + @Parameters

if @Debug = 0x1 print @sql

if @Execute = 0x1 exec(@sql)

end
go

exec dbo.ExecuteProcedure 'dbo.SomeProc', '@p1 = 1, @p2 = ''themhz''s proc''', 0x1, 0x0

आपको sp_executesql<पर भी नज़र डालनी चाहिए /ए> , जो लगभग वही करता है जो आप चाहते हैं, लेकिन इसमें सभी पैरामीटर डेटा प्रकार भी होने चाहिए, जो आप कहते हैं कि आपके परिदृश्य में संभव नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL PIVOT में कैसे ऑर्डर करें?

  2. जांचें कि क्या SQL सर्वर (कोई संस्करण) स्थापित है?

  3. SQL में सभी विशेष वर्ण ढूँढें और बदलें

  4. मैं कम से कम समय में 10 मिलियन रिकॉर्ड कैसे सम्मिलित कर सकता हूं?

  5. SQL सर्वर Concatenate GROUP BY