1. ホーム
  2. sql-server

[解決済み] create関数は、バッチ内の唯一のステートメントでなければなりません。

2022-02-24 18:37:53

質問

関数からこのようなエラーが発生します。

CREATE FUNCTION getLavel(@id int ,@lavel char)
RETURNS date
BEGIN
 DECLARE @date date
    select @date = (select authorization_date from Authorized WHERE diver_number = @id and @lavel =level_name)
    return @date
END
GO

その理由は何でしょうか?

ありがとうございました。

どのように解決するのですか?

これをインラインのテーブル値関数にする。これはスカラー関数よりも良いパフォーマンスを発揮するでしょう。また、文字データ型のデフォルトのサイズは使用しないでください。文字列のデフォルトの長さが何であるか知っていますか?使用方法によって異なることをご存知ですか?

CREATE FUNCTION getLavel
(
    @id int
    , @lavel char --You need to define the length instead of the default length
) 
RETURNS table
return 
    select authorization_date 
    from Authorized 
    WHERE diver_number = @id 
        and @lavel = level_name

GO