এই কাজটি করার জন্য আপনার দুটি পছন্দ আছে। হয় আপনি একটি একক ফলাফল সেট ব্যবহার করতে পারেন বা আপনি OUTPUT প্যারামিটার ব্যবহার করতে পারেন। আপনি বর্তমানে সঠিকভাবে উভয়ই ব্যবহার করছেন।
আউটপুট প্যারামিটার
আপনার সঞ্চিত পদ্ধতিটি @OrderCount
একটি দিকের সাথে একটি প্যারামিটার থাকার হিসাবে সংজ্ঞায়িত করা হয়েছেOUTPUT
আপনি যদি কোনও সরঞ্জামের মধ্যে সঞ্চিত প্রক্রিয়াটি ব্যবহার করতে চান, এসএসএমএস,। নেট, যাই হোক না কেন, দেখতে এটির মতো লাগবে
DECLARE @orderCount int = 0;
EXECUTE dbo.TestStoredProcSSVariable @orderCount OUTPUT;
SELECT @orderCount As OrderCountVariable;
OUTPUT
উপরোক্তটি নির্দিষ্ট না করে চালানো বৈধ তবে @ordCount এর মান দেখুন। এটি 1435 থেকে 0 এ পরিবর্তিত হয়েছে।
আপনি যখন এসআইএসআইএসের মধ্যে এসকিউএল কার্য সম্পাদন করেন তখন একই জিনিসটি সত্য হয়। আপনাকে অবশ্যই উল্লেখ করতে হবে যে প্যারামিটারটি OUTPUT এ রয়েছে এবং এটি প্যারামিটার ম্যাপিংস ট্যাবেও নির্দিষ্ট করতে হবে।
এছাড়াও আপনি যে ভেরিয়েবলটি মানচিত্র করতে চান সেটি উল্লেখ করুন এবং সেখানে OUTPUT দিকটি ব্যবহার করুন। এখানে আমি ফলাফলটি ম্যাপ করেছি এসএসআইএস ভেরিয়েবলের ইনট 32 টাইপের টাইপটিতেorderCount
একক ফলাফল সেট
আপনার এই সঠিকটির প্রথম অংশ রয়েছে - আপনি নির্দিষ্ট করেছেন যে ফলাফল সেটটি একক সারি।
আপনি নোট করবেন যে আমি EXECUTE dbo.TestStoredProcSSVariable ?
আপনাকে অবশ্যই একটি ইনপুট মান নির্দিষ্ট করতে হবে বা প্র্যাক কলটি বিরক্ত হবে (কমপক্ষে আপনি এটি সংজ্ঞায়িত করেছেন) হিসাবে ব্যবহার করছি। আপনি ?
পছন্দ মতো এর পরিবর্তে হার্ড মান কোড করতে পারে0
তারপরে, ফলাফল সেট ট্যাবে, আমি এখানে প্রথম কলামটি (জিরোথ অর্ডিনাল) ভেরিয়েবলের সাথে ম্যাপ করছি orderCountb
আপনি সরবরাহিত সঞ্চিত প্রক্রিয়াটি চালনা করলে আপনি অর্ডারকাউন্টে কোনও মান পাবেন না। কেন? কারণ আপনি সঞ্চিত পদ্ধতি কল থেকে কোনও কিছুই ফিরিয়ে দিচ্ছেন না। এর সঞ্চিত পদ্ধতির ভিতরে আমি একটি চূড়ান্ত বিবৃতি যুক্ত করেছি
SELECT @OrderCount AS OrderCount;
নিজে করো
আপনি নিম্নলিখিত বিমল ব্যবহার করে উভয় পদ্ধতির অন্বেষণ করতে পারেন। বিমল কী? বিজনেস ইন্টেলিজেন্স মার্কআপ ল্যাঙ্গুয়েজ বিআইয়ের অপারেটিং সিস্টেম। আপনি কেন এটি সম্পর্কে যত্নশীল তা হ'ল এটি আপনাকে কিছু এক্সএমএলকে একটি এসএসআইএস প্যাকেজে রূপান্তর করতে দেয়। আপনাকে যা করতে হবে তা হ'ল ফ্রি অ্যাডন বিআইডিএস হেল্পার ডাউনলোড এবং ইনস্টল করা
বিআইডিএস হেল্পার ইনস্টল করার পরে,
- প্রকল্পে ডান ক্লিক করুন এবং নতুন বিমল ফাইল যুক্ত করুন নির্বাচন করুন
- নিম্নলিখিত এক্সএমএল দিয়ে ফাইলের বিষয়বস্তু প্রতিস্থাপন করুন
- লাইনে 5 মানগুলি ঠিক করুন
Data Source
a সত্যিকারের সার্ভারে আপডেট করুন এবং Provider
আপনার এসএসআইএস সংস্করণটির সাথে সারিবদ্ধ করুন। আপনার স্ক্রিনশটটি দেখে, এটি সম্ভবত এসকিউএলএনসিএলআই 10.1 হবে
- বিমলস্ক্রিপ্ট.বিমলে রাইট ক্লিক করুন এবং এসএসআইএস প্যাকেজগুলি জেনারেট করুন চয়ন করুন
Bimlscript.biml
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<Connection
Name="tempdb"
ConnectionString="Data Source=.\dev2014;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;"
/>
</Connections>
<Packages>
<Package
Name="dba_114775"
ConstraintMode="Linear"
>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
Name="SQL Make procedure">
<DirectInput>
<![CDATA[IF EXISTS
(
SELECT
*
FROM
sys.procedures AS P
INNER JOIN
sys.schemas AS S
ON S.schema_id = P.schema_id
WHERE
S.name = 'dbo'
AND P.name = 'TestStoredProcSSVariable'
)
BEGIN
DROP PROCEDURE dbo.TestStoredProcSSVariable
END
GO
CREATE PROCEDURE dbo.TestStoredProcSSVariable
(
@OrderCount int OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
SET @OrderCount = 1135;
SELECT @OrderCount AS OrderCount;
END
GO
]]>
</DirectInput>
</ExecuteSQL>
<Container Name="SEQC Result set" ConstraintMode="Linear">
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SQL Make procedure.Output"></Input>
</Inputs>
</PrecedenceConstraints>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
ResultSet="SingleRow"
Name="SQL SingleRow">
<DirectInput>EXECUTE dbo.TestStoredProcSSVariable ?;</DirectInput>
<Results>
<Result VariableName="User.orderCountb" Name="0" />
</Results>
<Parameters>
<Parameter DataType="Int32" VariableName="User.orderCountb" Name="0" />
</Parameters>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="Execute SQL Task 2">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input
OutputPathName="SQL Placeholder.Output"
EvaluationOperation="ExpressionAndConstraint"
EvaluationValue="Success"
Expression="@[orderCount] < 5" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
</Container>
<Container Name="SEQC Output Parameter" ConstraintMode="Linear">
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SQL Make procedure.Output"></Input>
</Inputs>
</PrecedenceConstraints>
<Tasks>
<ExecuteSQL
ConnectionName="tempdb"
Name="SQL Output parameter">
<DirectInput>EXECUTE dbo.TestStoredProcSSVariable ? OUTPUT;</DirectInput>
<Parameters>
<Parameter
DataType="Int32"
VariableName="User.orderCount"
Name="0"
Direction="Output" />
</Parameters>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
</ExecuteSQL>
<ExecuteSQL ConnectionName="tempdb" Name="Execute SQL Task 2">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input
OutputPathName="SQL Placeholder.Output"
EvaluationOperation="ExpressionAndConstraint"
EvaluationValue="Success"
Expression="@[orderCount] < 5" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
</Container>
<ExecuteSQL ConnectionName="tempdb" Name="SQL Placeholder">
<DirectInput>SELECT 1;</DirectInput>
<PrecedenceConstraints>
<Inputs>
<Input OutputPathName="SEQC Result set.Output" />
<Input OutputPathName="SEQC Output Parameter.Output" />
</Inputs>
</PrecedenceConstraints>
</ExecuteSQL>
</Tasks>
<Variables>
<Variable DataType="Int32" Name="orderCount">-1</Variable>
<Variable DataType="Int32" Name="orderCountb">-1</Variable>
</Variables>
</Package>
</Packages>
</Biml>
নিম্নলিখিত এসএসআইএস প্যাকেজটি উপভোগ করুন
@[User::orderCount]