2017-12-29 8 views
1

SQL Serverで関数を学習しようとしていますが、なぜT-SQL関数から適切な結果が得られないのかわかりません。T-SQL関数から結果の値を取得できない理由

関数を作成するものクエリは次のとおりです。

CREATE FUNCTION yuri_func1 
    (@valDate VARCHAR(10)) 
RETURNS VARCHAR 
AS 
BEGIN 
    DECLARE @valWeekday VARCHAR(10); 

    SET @valWeekday = DATENAME(WEEKDAY, @valDate); 

    RETURN @valWeekday; 
END 

そして、他のクエリが

select dbo.yuri_func1('2017-12-29') as [요일] 

ですが、私が得た結果だけがちょうど

空白です。私はこのような機能を実行したとき(= "")

しかし、

select DATENAME(WEEKDAY, '2017-12-29') 

結果が

MONDAY 

だった私はまだ、なぜ彼らは異なる結果を返すことを得ることはありません。

なぜ誰が知っていますか?

+1

をVARCHARあなたの関数にパラメータとしてのDateTimeを受け入れ、ないしなければならないので、これは' –

+0

ですありがとうYogesh、私は本当にあなたのコメントに感謝します:) – Yuri

答えて

3

あなたは正しい戻り値の型のサイズを定義し、 `VARCHAR(10)を返すようサイズを定義していない

create Function yuri_func1 (@valDate DateTime) --Wrong parameter type 
RETURN VARCHAR(10) -- No proper sizing of return type 
AS 
BEGIN 
    declare @valWeekday varCHAR(10); 

    Set @valWeekday = DATENAME(WEEKDAY,@valDate); 


    return @valWeekday; 
END 
GO 
+1

ありがとうAlander。あなたがコメントしたように、私は関数のクエリを変更しました。それは働いた!私はそれを感謝する;) – Yuri

+0

あなたは歓迎ですyuri :) – Alander

関連する問題