স্কিএল-সার্ভারের জন্য একটি পরিবর্তনশীল মধ্যে গতিশীল এসকিউএল এর ফলাফল প্রাপ্তি


116

সঞ্চিত পদ্ধতিতে নিম্নলিখিত হিসাবে গতিশীল এসকিউএল সম্পাদন করা হচ্ছে:

DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
SET @city = 'London'
SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city

এসপিতে আমি কীভাবে গণনা (*) কলামের মানটি রিটার্ন মান হিসাবে ব্যবহার করব?

উত্তর:


202
DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
declare @counts int
SET @city = 'New York'
SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75),@cnt int OUTPUT', @city = @city, @cnt=@counts OUTPUT
select @counts as Counts

4
+1: আপনি আমাকে এটির কাছে প্রহার করলেন, একটি ভেরিয়েবল ঘোষণা করতে হবে এবং এটি একটি OUTPUT হিসাবে চিহ্নিত করতে হবে। আরও তথ্যের জন্য এবং এসকিউএল সার্ভার গতিশীল এসকিউএল-এর জন্য প্রস্তাবিত পাঠের জন্য, গতিশীল এসকিউএল এর অভিশাপ এবং আশীর্বাদগুলি দেখুন
ওএমজি পনিস

1
ধন্যবাদ. এন '@ সিটি এনভারচার ()৫), @ সিএনটি ইন্ট আউটপুট' এর OUTPUT কীওয়ার্ডটি আমার অনুপস্থিত ছিল।
পিটার লিন্ডহোম

1
ডায়ামিক স্টেটমেন্টে আউটপুট ভেরিয়েবল যুক্ত করার প্রয়োজন নেই এমন কোনও সমাধান আছে কি ???
ট্যাব আললেমান

2

আপনি সম্ভবত এটি চেষ্টা করে দেখেছেন, তবে আপনার স্পেসিফিকেশনগুলি কি আপনি এটি করতে পারেন?

DECLARE @city varchar(75)
DECLARE @count INT
SET @city = 'London'
SELECT @count = COUNT(*) FROM customers WHERE City = @city

2

গতিশীল সংস্করণ

    ALTER PROCEDURE [dbo].[ReseedTableIdentityCol](@p_table varchar(max))-- RETURNS int
    AS
    BEGIN
        -- Declare the return variable here
       DECLARE @sqlCommand nvarchar(1000)
       DECLARE @maxVal INT
       set @sqlCommand = 'SELECT @maxVal = ISNULL(max(ID),0)+1 from '+@p_table
       EXECUTE sp_executesql @sqlCommand, N'@maxVal int OUTPUT',@maxVal=@maxVal OUTPUT
       DBCC CHECKIDENT(@p_table, RESEED, @maxVal)
    END


exec dbo.ReseedTableIdentityCol @p_table='Junk'

0
DECLARE @sqlCommand nvarchar(1000)
DECLARE @city varchar(75)
DECLARE @cnt int
SET @city = 'London'
SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city
RETURN @cnt

1
আমি মনে করি আপনার উত্তরটি বন্ধ হয়ে গেছে।
সেজে

এমএসজি 137, Must declare the scalar variable "@cnt". এমএসজি 178 A RETURN statement with a return value cannot be used in this context.,। কাজের একটি সুন্দর টুকরো))
it3xl

0

এটি একটি সমাধান হতে পারে?

declare @step2cmd nvarchar(200)
DECLARE @rcount NUMERIC(18,0)   
set @step2cmd = 'select count(*) from uat.ap.ztscm_protocollo' --+ @nometab
EXECUTE @rcount=sp_executesql @step2cmd
select @rcount

-2
 vMYQUERY := 'SELECT COUNT(*) FROM ALL_OBJECTS WHERE OWNER = UPPER(''MFI_IDBI2LIVE'') AND OBJECT_TYPE = ''TABLE'' 
    AND OBJECT_NAME  =''' || vTBL_CLIENT_MASTER || '''';
    PRINT_STRING(VMYQUERY);
    EXECUTE IMMEDIATE  vMYQUERY INTO VCOUNTTEMP ;

এটি স্কয়ার সার্ভারের জন্য প্রযোজ্য নয়।
রবার্ট লুজো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.