GETDATE এর সাথে কল করা স্টোরড পদ্ধতি ') এর নিকটে ভুল সিনট্যাক্স


120

হয়তো আমি 'বিকেল' এর একটি মুহূর্ত করছি, তবে কেন আমি আসছি তা যে কেউ ব্যাখ্যা করতে পারে

এমএসজি 102, স্তর 15, রাজ্য 1, লাইন 2
ভুল সিনট্যাক্স নিকটে ')'।

দৌড়ানোর সময়

CREATE PROC DisplayDate 
    (@DateVar DATETIME) 
AS 
BEGIN
    SELECT @DateVar
END
GO

EXEC DisplayDate GETDATE();

উত্তর:


169

আপনার সঞ্চিত পদ্ধতির আর্গুমেন্ট হিসাবে আপনি কোনও ফাংশন কলে যেতে পারবেন না। পরিবর্তে একটি মধ্যবর্তী ভেরিয়েবল ব্যবহার করুন:

DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;

22
এই নিষেধাজ্ঞার কারণ আছে কি?
জমির

@ স্টুডেন্ট বুলিয়ান এবং পূর্ণসংখ্যা কলামের অভাব বা ওরাকলে ফিল্টার কীগুলির অভাবের মতো বুনিয়াদীদের কি কোনও কারণ আছে ...?
অধিনায়ক

20

মিচ গমের উল্লেখ হিসাবে আপনি কোনও ফাংশন পাস করতে পারবেন না।

যদি আপনার ক্ষেত্রে আপনার পূর্বনির্ধারিত মান বা GETDATE () পাস করতে হয় - আপনি ডিফল্ট মানটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনার সঞ্চিত পদ্ধতিটি পরিবর্তন করুন:

ALTER PROC DisplayDate 
(
    @DateVar DATETIME = NULL
) AS 
BEGIN
    set @DateVar=ISNULL(@DateVar,GETDATE())

    --the SP stuff here
    SELECT @DateVar
END
GO

এবং তারপরে চেষ্টা করুন:

EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate

মন্তব্য : এখানে আমি অনুমান করেছি যে এই প্যারামিটারের জন্য NULL মান ব্যবহার করা হচ্ছে না। যদি এটি আপনার ক্ষেত্রে না হয় - আপনি অন্য অব্যবহৃত মান ব্যবহার করতে পারেন, উদাহরণস্বরূপ '1900-01-01 00: 00: 00.000'

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