কীভাবে এসকিউএল বিকাশকারীতে এসকিউএল সার্ভার সঞ্চিত পদ্ধতি কার্যকর করবেন?


148

আমাকে একটি এসকিউএল সার্ভার ডাটাবেসে একটি ব্যবহারকারীর অ্যাকাউন্ট দেওয়া হয়েছে যা কেবলমাত্র একটি সঞ্চিত প্রক্রিয়া চালানোর সুযোগ পায়। আমি জেটিডিএস এসকিউএল সার্ভার জেডিবিসি জার ফাইলটি এসকিউএল বিকাশকারীকে যুক্ত করে এটিকে তৃতীয় পক্ষের জেডিবিসি ড্রাইভার হিসাবে যুক্ত করেছি। আমি এসকিউএল সার্ভার ডাটাবেসে সফলভাবে লগ ইন করতে পারি। প্রক্রিয়াটি চালানোর জন্য আমাকে এই সিনট্যাক্সটি দেওয়া হয়েছিল:

EXEC proc_name 'paramValue1' 'paramValue2'

আমি যখন এটি বিবৃতি বা স্ক্রিপ্ট হিসাবে চালিত করি, তখন আমি এই ত্রুটিটি পাই:

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

আমি বিবৃতিটি মোড়ানোর চেষ্টা করেছি BEGIN/END, তবে একই ত্রুটিটি পেয়েছি । এসকিউএল বিকাশকারী থেকে প্রক্রিয়া কল করা সম্ভব? যদি তা হয় তবে আমার কোন সিনট্যাক্সটি ব্যবহার করা দরকার?

উত্তর:


231

আপনার এক্সইসি ক্লজ দরকার নেই। সহজভাবে ব্যবহার

proc_name paramValue1, paramValue2

(এবং মিসনোমারের উল্লেখ অনুসারে আপনার কমা প্রয়োজন)


8
এই নিয়মের কোনও ব্যতিক্রম আছে কি? আমি "sp_dev_mystoredproc 'এর নিকটে ভুল সিনট্যাক্স পেয়েছি বলে মনে হচ্ছে" " যখন এই সিনট্যাক্সের সাথে এক্সিকিউট করা হয়।
নুজোলিলো

2
আমার ক্ষেত্রে EXEC পূর্বের প্রোম নামটি প্রয়োজন
সিজার

3
আমি @ মুরিলোকুনজে প্রস্তাবিত লিঙ্কটি পরিদর্শন করার দৃ strongly় পরামর্শ দিচ্ছি। জানা খুব গুরুত্বপূর্ণ।
আরবিটি

@ আরবিটি কে কোথায় লিঙ্ক?
সার্ভেড

72

আপনি অনুপস্থিত ,

EXEC proc_name 'paramValue1','paramValue2'

1
আমি অনুপস্থিত কমা যোগ করেছি, তবে আবারও একই ত্রুটি পেয়েছি।
sdoca

আপনার পরামিতিগুলি যদি ভার্চার হয় তবে কেবল আপনার উদ্ধৃতিগুলি দরকার ... অন্য কিছু ভাবতে পারে না ... আপনি এটি কেবল নতুন উইন্ডোতে চালানোর চেষ্টা করতে পারেন- EXEC proc_nameএবং দেখুন যে এটি আপনাকে জিজ্ঞাসা করে কিনা দ্বিতীয় প্যারামিটারটি ... তারপর অন্তত আপনি কি জানেন আপনার sytax right..if স্বল্পতা কাজ মানে কি probanly Dont অধিকার সংরক্ষণ proc নাম ... চেষ্টা পূর্ণ যোগ্যতাসম্পন্ন নাম ..
বিশাল

আমি দ্বিতীয় প্যারামিটারটি সরিয়েছি এবং এখনও একই ত্রুটি। আমি মনে করি না এটি মোটেই প্রক্রিয়া চলছে। EXEC কমান্ডটি সিনট্যাক্সটি হাইলাইট করা হয়নি, তাই আমি অনুমান করছি যে সংযোগটি কোনও এসকিউএল সার্ভার ডাটাবেসের সাথে থাকা সত্ত্বেও বিকাশকারী এটি সনাক্ত করতে পারে না। তবে তা নিশ্চিত / অস্বীকার করার জন্য ওয়েবে আমি কিছুই খুঁজে পাচ্ছি না।
sdoca

হ্যাঁ ... কিছু রেকর্ড নির্বাচন করে কিছু সাধারণ কমান্ড কার্যকর করে দেখুন কিছু কাজ করে কিনা! .. শুভকামনা ..
বিশাল

দুর্ভাগ্যক্রমে, আমার ব্যবহারকারীর কেবল সঞ্চিত প্রক্রিয়া চালানোর জন্য বিশেষাধিকার রয়েছে।
sdoca

18

আপনার এটি করা দরকার:

    exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'


0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

যদি সঞ্চিত পদ্ধতিটির উদ্দেশ্যটি INSERTকোনও টেবিলে একটি সম্পাদন করা হয় যার একটি পরিচয় ক্ষেত্র ঘোষণা করা থাকে, তবে ক্ষেত্রটি এই @paramValue1দৃশ্যে ঘোষণা করা উচিত এবং কেবল 0 মানটি পাস করা উচিত, কারণ এটি স্বয়ংক্রিয়-বৃদ্ধি হবে।


0

আমি জানি এটি পুরানো। তবে এটি অন্যকে সাহায্য করতে পারে।

আমি BEGIN / END এর মধ্যে এসপি কলিং ফাংশন যুক্ত করেছি। এখানে একটি কার্যনির্বাহী স্ক্রিপ্ট রয়েছে।

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP 
    where Id = @Id 

-3

যদি আপনাকে কেবল proc_name 'paramValue1' , 'paramValue2'... একই সময়ে আপনার সঞ্চিত প্রক্রিয়াটি উত্তেজিত করতে হয় তবে আপনি একাধিক কোয়েরি যেমন একটি নির্বাচিত ক্যোয়ারী এবং সঞ্চিত প্রক্রিয়া যুক্ত করতে হবে তেমন কার্যকর করছেন select * from tableName EXEC proc_name paramValue1 , paramValue2...


-8

সঞ্চিত পদ্ধতিগুলি নীচের সিনট্যাক্সটি ব্যবহার করে স্কয়ার বিকাশকারী সরঞ্জামে চালানো যেতে পারে

BEGIN প্রক্রিয়া নাম (); শেষ;

যদি কোনও প্যারামিটার থাকে তবে তা পাস করতে হবে।


আপনি কেন একটি বিবৃতি ব্লক দ্বারা একটি একক বিবৃতি আবদ্ধ করছেন? আপনাকে কেবল টি-এসকিউএল স্টেটমেন্টের একটি সিরিজের জন্য এটি করতে হবে ।
ডেভিড ফেরেনসি রোগান

-11
Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.

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