SQL Server:ユーザー定義の関数パラメーター

リッキーティルソン

さまざまな長さのパラメーター(および他のパラメーター)を受け取ることができるユーザー定義関数を作成できるかどうか疑問に思いました。

基本的に、INステートメントで使用されるパラメーターを渡したいと思います私がやりたいのは、次のようなものです。

CREATE FUNCTION ufnGetOpenNotificationValue 
    (@LegacyTypeID INT, 
     @MonthEnd DATE, 
     @YearStart DATE, 
     @YearEnd DATE)

@LegacyTypeID整数のリストはどこにありますか。

したがって、関数を使用すると、次のようになります。

SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
    ((1,2,3),'2014-07-31','2013-09-01','2014-08-31')

のではなく

SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
        (1,'2014-07-31','2013-09-01','2014-08-31') + 
    RE_Auxiliary.dbo.ufnGetOpenNotificationValue
        (2,'2014-07-31','2013-09-01','2014-08-31') + 
    RE_Auxiliary.dbo.ufnGetOpenNotificationValue
        (3,'2014-07-31','2013-09-01','2014-08-31')

しかし、複数の整数を渡そうとすると、次のようなエラーが発生します。

Incorrect syntax near ','
アレックスフレッチャー

Alex Kが述べているように、SQL関数の入力として配列を渡すことはできません。テーブルタイプを渡すことができます(パラメータとしてテーブルを渡します)。

CREATE TYPE TableType 
AS TABLE (LegacyTypeID INT)

CREATE FUNCTION ufnGetOpenNotificationValue 
(@LegacyTypeID TableType, 
 @MonthEnd DATE, 
 @YearStart DATE, 
 @YearEnd DATE)
...
WHERE COLUMN_NAME IN (SELECT LegacyType FROM @LegacyTypeID)

次に、その変数をパラメーターとして渡して関数を呼び出す前に、TableType変数に挿入する必要があります。

もう1つのオプションは、リストをコンマ区切りの値のリストとして渡すことです。次に、where句で使用する関数(このような関数)を使用します

CREATE FUNCTION ufnGetOpenNotificationValue 
(@LegacyTypeID NVARCHAR(256), 
 @MonthEnd DATE, 
 @YearStart DATE, 
 @YearEnd DATE)
...
WHERE COLUMN_NAME in (SELECT val FROM dbo.f_split(@StringParameter, ','))

次に、次のように呼び出すことができます。

SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
('1,2,3','2014-07-31','2013-09-01','2014-08-31')

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL Server:テーブルパラメーターフィルタリングを使用したユーザー定義関数

分類Dev

SQL形式の日付ユーザー定義関数エラー

分類Dev

MySQLユーザー定義関数-SQL構文のエラー

分類Dev

ユーザー定義パラメーターを使用したSQLケース

分類Dev

スカラーユーザー定義関数内のT-Sqlクエリのパフォーマンス

分類Dev

スカラーユーザー定義関数内のT-Sqlクエリのパフォーマンス

分類Dev

SQL Serverのユーザー定義関数の必要性は何ですか?

分類Dev

SQL Server:チェック制約のユーザー定義関数

分類Dev

SQL Server2008のユーザー定義パラメーターに基づいてテーブルとgroupbyの結果を結合します

分類Dev

別のユーザー定義関数内でSQLユーザー定義関数を呼び出す

分類Dev

SQL-SSMSでのユーザー定義関数の作成

分類Dev

SQL:ユーザー定義型の集計関数

分類Dev

U-SQL:ユーザー定義レデューサーにパラメーターを渡す方法は?

分類Dev

SQLサーバーのユーザー定義関数を作成する方法

分類Dev

SQLのユーザー定義関数内で関数を呼び出す

分類Dev

SQL Server:ユーザー定義のテーブルタイプのltrim

分類Dev

SQL Server:employeeIDに対応するすべての値の合計を返すユーザー定義関数

分類Dev

SQLユーザー定義関数が実行されない

分類Dev

ユーザー定義関数はSQL標準ですか?

分類Dev

ユーザー定義関数T-SQLの大文字と小文字の区別

分類Dev

関数の戻り値のSQL関数パラメーター

分類Dev

タイプの変更/進化ユーザー定義のコンストラクタ関数シグネチャ(PL / SQL)

分類Dev

SQL関数に複数のパラメーターを渡す

分類Dev

Apache Spark SQLのユーザー定義集計関数(UDAF)から複数の配列を返す

分類Dev

SQLユーザー定義関数での共通テーブル式の使用中にエラーが発生しました

分類Dev

SQL関数パラメーターの受け渡し

分類Dev

ユーザー定義の日付によるパーティションSQL

分類Dev

SQL Server-ユーザー定義のテーブルタイプの作成-ユーザーの作成に実行権限がありませんか?

分類Dev

JavaまたはGroovyを使用してSQLiteのユーザー定義SQL関数を作成していますか?

Related 関連記事

  1. 1

    SQL Server:テーブルパラメーターフィルタリングを使用したユーザー定義関数

  2. 2

    SQL形式の日付ユーザー定義関数エラー

  3. 3

    MySQLユーザー定義関数-SQL構文のエラー

  4. 4

    ユーザー定義パラメーターを使用したSQLケース

  5. 5

    スカラーユーザー定義関数内のT-Sqlクエリのパフォーマンス

  6. 6

    スカラーユーザー定義関数内のT-Sqlクエリのパフォーマンス

  7. 7

    SQL Serverのユーザー定義関数の必要性は何ですか?

  8. 8

    SQL Server:チェック制約のユーザー定義関数

  9. 9

    SQL Server2008のユーザー定義パラメーターに基づいてテーブルとgroupbyの結果を結合します

  10. 10

    別のユーザー定義関数内でSQLユーザー定義関数を呼び出す

  11. 11

    SQL-SSMSでのユーザー定義関数の作成

  12. 12

    SQL:ユーザー定義型の集計関数

  13. 13

    U-SQL:ユーザー定義レデューサーにパラメーターを渡す方法は?

  14. 14

    SQLサーバーのユーザー定義関数を作成する方法

  15. 15

    SQLのユーザー定義関数内で関数を呼び出す

  16. 16

    SQL Server:ユーザー定義のテーブルタイプのltrim

  17. 17

    SQL Server:employeeIDに対応するすべての値の合計を返すユーザー定義関数

  18. 18

    SQLユーザー定義関数が実行されない

  19. 19

    ユーザー定義関数はSQL標準ですか?

  20. 20

    ユーザー定義関数T-SQLの大文字と小文字の区別

  21. 21

    関数の戻り値のSQL関数パラメーター

  22. 22

    タイプの変更/進化ユーザー定義のコンストラクタ関数シグネチャ(PL / SQL)

  23. 23

    SQL関数に複数のパラメーターを渡す

  24. 24

    Apache Spark SQLのユーザー定義集計関数(UDAF)から複数の配列を返す

  25. 25

    SQLユーザー定義関数での共通テーブル式の使用中にエラーが発生しました

  26. 26

    SQL関数パラメーターの受け渡し

  27. 27

    ユーザー定義の日付によるパーティションSQL

  28. 28

    SQL Server-ユーザー定義のテーブルタイプの作成-ユーザーの作成に実行権限がありませんか?

  29. 29

    JavaまたはGroovyを使用してSQLiteのユーザー定義SQL関数を作成していますか?

ホットタグ

アーカイブ