SnowConvert AI - SQL-Serverの関数リファレンス¶
ISNUMERIC_UDF¶
定義¶
このユーザー定義関数(UDF)は、式が有効な数値タイプかどうかを判定します。
パラメーター¶
EXPR VARCHAR
評価される式。
戻り値¶
入力式が有効な数値データ型として評価された場合は1を返し、そうでない場合は0を返します。
使用例¶
入力:
出力:
PATINDEX_UDF¶
定義¶
このユーザー定義関数(UDF)は、指定された式でパターンが最初に出現する開始位置を返すか、パターンが見つからない場合はゼロを返します。
パラメーター¶
PATTERN VARCHAR
検索するパターン。
EXPRESSION VARCHAR
評価される式。
戻り値¶
パターンの開始位置を整数で返します。
使用例¶
入力:
出力:
ERROR_SEVERITY_UDF¶
定義¶
このユーザー定義関数(UDF)は、エラーの重大度を示す値を取得します。デフォルト値は常に16です。
パラメーター¶
入力パラメーターはありません。
戻り値¶
SQL 変数名 ERROR_SEVERITY に関連付けられた値の 文字列 を返します。
使用例¶
入力:
出力:
TRANSFORM_SP_EXECUTE_SQL_STRING_UDF(STRING, STRING, ARRAY, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、 SQL 文字列内の値を直接置き換えることで、 SP_EXECUTESQL システムプロシージャの組み込みパラメーター(データバインド)の動作をエミュレートします。
さらに、これは SP_EXECUTESQL が変換される EXECUTE IMMEDIATE の外部で行われるため、文字列から OUTPUT パラメーターを削除します。
詳細情報については、 SP_EXECUTESQL 翻訳仕様をご確認ください。
パラメーター¶
_SQL_STRING STRING
変換する文字列。
_PARAMS_DEFINITION STRING
元のパラメーター定義は、パラメーターの値を割り当てる順番を確認します。
_PARAMS_NAMES ARRAY
SQL 文字列の値を置き換えるパラメーター名の配列。
_PARAMS_VALUES ARRAY
SQL 文字列で置き換えるパラメーター値の配列。
戻り値¶
埋め込まれたパラメーターの値を置き換えた STRING を返します。
使用例¶
入力:
出力:
TABLE_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前のテーブルが以前に作成されたかどうかを確認します。
パラメーター¶
NAME VARCHAR
評価されるテーブル名。
戻り値¶
テーブルの存在に応じてブール式を返します。
使用例¶
入力:
出力:
ERROR_PROCEDURE_UDF¶
定義¶
このユーザー定義関数(UDF)は、 SQL 変数名 ERROR_PROCEDURE に関連付けられた値を返します。
パラメーター¶
入力パラメーターはありません。
戻り値¶
SQL 変数名 ERROR_PROCEDURE に関連付けられた値の 文字列 を返します。
使用例¶
入力:
出力:
DB_ID_UDF(STRING)¶
定義¶
このユーザー定義関数(UDF)は、 DB_ID の機能をエミュレートします。
パラメーター¶
p_database_name STRING
IDを取得する先のデータベース名。
戻り値¶
Returns an id which corresponds to the number assigned to the database when it is created. This number is assigned consecutively.
使用例¶
入力:
出力:
警告
データベースが存在しない場合はnullを返します。
ERROR_LINE_UDF¶
定義¶
このユーザー定義関数(UDF)は、 SQL 変数名 ERROR_LINE に関連付けられた値を返します。
パラメーター¶
入力パラメーターはありません。
戻り値¶
SQL 変数名 ERROR_LINE に関連付けられた値の 文字列 を返します。
使用例¶
入力:
出力:
FUNCTION_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前の関数が以前に作成されたかどうかを確認します。
パラメーター¶
NAME VARCHAR
評価される関数名。
戻り値¶
関数の存在に応じてブール式を返します。
使用例¶
入力:
出力:
CONSTRAINT_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前の制約が以前に作成されたかどうかを確認します。
パラメーター¶
NAME VARCHAR
評価される制約名。
戻り値¶
制約の存在に応じてブール式を返します。
使用例¶
入力:
出力:
FOR_XML_UDF (OBJECT, VARCHAR, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、オブジェクトを XML に変換します。
パラメーター¶
OBJ OBJECT
変換するオブジェクト。
ELEMENT_NAME VARCHAR
オブジェクトに与える要素名。
ROOT_NAME VARCHAR
XML のルート名。
戻り値¶
XML の形式でvarcharを返します。
使用例¶
入力:
出力:
OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前のオブジェクトが以前に作成されたかどうかをチェックします。
パラメーター¶
NAME VARCHAR
評価されるオブジェクト名。
戻り値¶
オブジェクトの存在に応じてブール式を返します。
使用例¶
入力:
出力:
PROCEDURE_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前のプロシージャが以前に作成されたかどうかを確認します。
パラメーター¶
NAME VARCHAR
評価されるプロシージャ名。
戻り値¶
プロシージャの存在に応じてブール式を返します。
使用例¶
入力:
出力:
ISDATE_UDF¶
定義¶
このユーザー定義関数(UDF)は、入力値が有効な日付かどうかを判定します。
パラメーター¶
DATE_VALUE STRING
評価される日付。
戻り値¶
入力式が有効な日付データ型として評価された場合は1を返し、そうでない場合は0を返します。
使用例¶
入力:
出力:
ERROR_NUMBER_UDF¶
定義¶
このユーザー定義関数(UDF)は、 SQL 変数名 ERROR_NUMBER に関連付けられた値を返します。
パラメーター¶
入力パラメーターはありません。
戻り値¶
SQL 変数名 ERROR_NUMBER に関連付けられた値の 文字列 を返します。
使用例¶
入力:
出力:
OFFSET_FORMATTER (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、オフセット時およびそのプレフィックス演算子を形式化するための 補助関数 です。
パラメーター¶
offset_hrs VARCHAR
フォーマットされる値。
戻り値¶
オフセットの形式出力をvarchar値で返します。
使用例¶
入力:
出力:
OPENXML_UDF¶
定義¶
このユーザー定義関数(UDF)は、 XML の読み取り値からクエリを生成します。
パラメーター¶
XML VARCHAR
varchar としての XML コンテンツ。
PATH VARCHAR
抽出するノードのパス。
戻り値¶
XML の読み取りによって生成されたデータを含むテーブルを返します。
使用例¶
入力:
出力:
| Value | |
|---|---|
| 1 | { "order": { "$name": "order", "customer": [ { "customer": { "$name": "customer", "@contactName": "Test ABC", "@customerID": "CUST001", "iceCreamOrder": [ { "iceCreamOrder": { "$name": "iceCreamOrder", "@employeeID": 101, "@orderDate": "2023-05-15T14:30:00", "@orderID": "ORD001", "iceCreamDetail": [ { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "001", "@quantity": 2 } }, { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "003", "@quantity": 1 } } ] } } ] } } ] } } |
| 2 | { "order": { "$name": "order", "customer": [ { "customer": { "$name": "customer", "@contactName": "Test XYZ", "@customerID": "CUST002", "iceCreamOrder": [ { "iceCreamOrder": { "$name": "iceCreamOrder", "@employeeID": 102, "@orderDate": "2023-06-20T12:45:00", "@orderID": "ORD002", "iceCreamDetail": [ { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "005", "@quantity": 3 } }, { "iceCreamDetail": { "$name": "iceCreamDetail", "@productID": "007", "@quantity": 2 } } ] } } ] } } ] } } |
QUOTENAME_UDF (VARCHAR, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、区切り文字を追加したUnicode文字列を返して、有効な SQL Serverの区切り文字識別子を作成します。
パラメーター¶
STR VARCHAR
変換する文字列。
QUOTECHAR VARCHAR
最初のパラメーターに追加する区切り文字。
戻り値¶
2番目のパラメーターの識別子を区切り文字として付加したvarcharを返します。
使用例¶
入力:
出力:
UPDATE_ERROR_VARS_UDF (STRING, STRING, STRING)¶
定義¶
このユーザー定義関数(UDF)は、プロシージャがいつエラーをスローしたかを知るために、環境のエラー変数を更新します。
パラメーター¶
STATE STRING
エラーメッセージの状態。
MESSAGE STRING
エラー時に表示するメッセージ。
SEVERITY STRING
エラーの重大度。
戻り値¶
新しいエラーメッセージ情報を含む 文字列 値を返します。
使用例¶
入力:
出力:
ROUND_MILLISECONDS_UDF (TIMESTAMP_TZ)¶
定義¶
このユーザー定義関数(UDF)は、ミリ秒を0、3、7ミリ秒単位の増分で丸める関数です。トランザクションは、日付時間の値のミリ秒を自動的に丸めます。
パラメーター¶
INPUT TIMESTAMP_TZ
丸められる入力時間。
戻り値¶
同じ入力 TIMESTAMP_TZ 値を、ミリ秒単位で丸めたものを返します。
使用例¶
入力:
出力:
CAST_NUMERIC_TO_TIMESTAMP_TZ_UDF (NUMBER)¶
定義¶
このユーザー定義関数(UDF)は、 timestamp_tz に数値をキャストするために使用されます。
パラメーター¶
INPUT NUMBER
キャストされる番号。
戻り値¶
現在のタイムゾーンを timestamp_tz で返します。
使用例¶
入力:
出力:
IDENTITY_UDF¶
定義¶
このユーザー定義関数(UDF)は、式が有効な数値タイプかどうかを判定します。
パラメーター¶
入力パラメーターはありません。
戻り値¶
整数式を返します。
使用例¶
警告
ロジックをサポートするシーケンスが生成されます。
入力:
出力:
FOR_XML_UDF (OBJECT, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、オブジェクトを XML に変換します。
パラメーター¶
OBJ OBJECT
変換するオブジェクト。
ELEMENT_NAME VARCHAR
オブジェクトに与える要素名。
戻り値¶
XML の形式でvarcharを返します。
使用例¶
入力:
出力:
QUOTENAME_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、区切り文字を追加したUnicode文字列を返して、有効な SQL Serverの区切り文字識別子を作成します。
パラメーター¶
STR VARCHAR
変換する文字列。
戻り値¶
区切り文字識別子を付加したvarcharを返します。
使用例¶
入力:
出力:
VIEW_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前のビューが以前に作成されたかどうかを確認します。
パラメーター¶
NAME VARCHAR
評価されるビュー名。
戻り値¶
ビューの存在に応じてブール式を返します。
使用例¶
入力:
出力:
SUBTRACT_TIMESTAMP_TZ_UDF (TIMESTAMP_TZ, TIMESTAMP_TZ)¶
定義¶
このユーザー定義関数(UDF)は、両方の入力をシステムセッションのタイムゾーンに変換し、1900-01-01 00:00:00.000をゼロ値として日付(FIRST_DATE - SECOND_DATE)を減算します。どの値にもタイムゾーンが含まれていない場合は、現在のセッションのタイムゾーンが使用されます。
パラメーター¶
FIRST_DATE TIMESTAMP_TZ
減算される最初の日付。
SECOND_DATE TIMESTAMP_TZ
減算する2番目の日付。
戻り値¶
入力された2つの日付の差を返します。
使用例¶
入力:
出力:
STR_UDF (FLOAT, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、 SQL Server STR()が1つか2つのオプションパラメーターを使用している場合に、その機能をSnowflakeに翻訳するためのテンプレートです。
パラメーター¶
FLOAT_EXPR FLOAT
処理する式。
FORMAT VARCHAR
適用する形式。
戻り値¶
形式を指定したvarcharを返します。
使用例¶
入力:
出力:
XML_JSON_SIMPLE¶
定義¶
このユーザー定義関数(UDF)は、 XML 値から読み取りを実行した情報をオブジェクトとして生成します。
パラメーター¶
XML VARIANT
読み取る XML。
戻り値¶
XML からの処理された情報を持つオブジェクトを返します。
使用例¶
入力:
出力:
FORMATMESSAGE_UDF¶
定義¶
このユーザー定義関数(UDF)は、 SQL Server FORMATMESSAGE 関数の機能を提供します。既存のメッセージから文字列を指定してメッセージを作成します。
パラメーター¶
MESSAGE STRING
既存のメッセージ文字列。
ARGS ARRAY
最初のメッセージ文字列に追加される引数。
戻り値¶
引数の位置に関連する対応連結メッセージのある文字列を返します。
使用例¶
入力:
出力:
IS_MEMBER_UDF¶
定義¶
このユーザー定義関数(UDF)は、アクセストークンを調べることによってウィンドウズグループメンバーシップを決定します。
パラメーター¶
ROLE STRING
チェックするロール名。
戻り値¶
現在のユーザーがロールのメンバーがtrueの場合はブール式で、そうでない場合はfalseを返します。
使用例¶
入力:
出力:
RAISERROR_UDF (DOUBLE, DOUBLE, DOUBLE, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、特定のメッセージを持つ例外をスローします。
パラメーター¶
MSG_ID DOUBLE
エラーメッセージのメッセージ ID。
SEVERITY DOUBLE
エラーの重大度番号。
STATE DOUBLE
エラーメッセージの状態番号。
PARAMS ARRAY
エラーメッセージの追加情報。
戻り値¶
エラーメッセージのあるvarcharを返します。
使用例¶
入力:
出力:
STR_UDF(FLOAT)¶
定義¶
このユーザー定義関数(UDF)は、 SQL Server STR()が1つか2つのオプションパラメーターを使用している場合に、その機能をSnowflakeに翻訳するためのテンプレートです。
パラメーター¶
FLOAT_EXPR FLOAT
処理する式。
戻り値¶
形式を指定したvarcharを返します。
使用例¶
入力:
出力:
SWITCHOFFSET_UDF (TIMESTAMP_TZ, VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、パラメーターtarget_tzの時間を調整した新しいtimestamp_tzを返します。
パラメーター¶
source_timestamp TIMESTAMP_TZ
調整するソースタイムスタンプ。
target_tz varchar
取得するターゲット時間。
戻り値¶
フォーマットされたターゲット時間を TIMESTAMP_TZ として返します。
使用例¶
入力:
出力:
time_in_paris |
time_in_costa_rica |
|---|---|
2022-10-05 22:00:24.467 +02:00 |
2022-10-05 14:00:24.467 -06:00 |
GET_CURRENT_TIMEZONE_UDF¶
定義¶
このユーザー定義関数(UDF)は、現在のセッションまたはシステムのタイムゾーンをリテラルとして取得します。
パラメーター¶
パラメーターはありません。
戻り値¶
現在のセッションまたはシステムのタイムゾーンをリテラル値として返します。
使用例¶
入力:
出力:
UPDATE_ERROR_VARS_UDF (STRING, STRING, STRING, STRING, STRING, STRING)¶
定義¶
このユーザー定義関数(UDF)は、プロシージャがいつエラーをスローしたかを知るために、環境のエラー変数を更新します。
パラメーター¶
LINE STRING
エラーに関連する行。
CODE STRING
エラーメッセージに関連するエラーコード。
STATE STRING
エラーメッセージの状態。
MESSAGE STRING
エラー時に表示するメッセージ。
PROC_NAME STRING
プロシージャ名。
SEVERITY STRING
エラーの重大度。
戻り値¶
新しいエラーメッセージ情報を含む 文字列 値を返します。
使用例¶
入力:
出力:
SEQUENCE_OBJECT_ID_UDF (VARCHAR)¶
定義¶
このユーザー定義関数(UDF)は、特定の名前のシーケンスが以前に作成されたかどうかをチェックします。
パラメーター¶
NAME VARCHAR
評価されるシーケンス名。
戻り値¶
シーケンスの存在に応じてブール式を返します。
使用例¶
入力:
出力:
CAST_TIMESTAMP_TZ_TO_NUMERIC_UDF (TIMESTAMP_TZ)¶
定義¶
このユーザー定義関数(UDF)は、 timestamp_tz を数値にキャストするために使用されます。数値では タイムスタンプ 情報を保存できないため、現在のタイムゾーンを UTC に変換します。
パラメーター¶
INPUT TIMESTAMP_TZ
キャストされる タイムスタンプ 入力。
戻り値¶
小数点のある数値を返します。整数部は1900-01-01からの日数を表し、10進数は24時間におけるミリ秒の割合を表します。
使用例¶
入力:
出力:
RAISERROR_UDF (VARCHAR, DOUBLE, DOUBLE, ARRAY)¶
定義¶
このユーザー定義関数(UDF)は、特定のメッセージを持つ例外をスローします。
パラメーター¶
MSG_TEXT VARCHAR
エラーメッセージのメッセージテキスト。
SEVERITY DOUBLE
エラーの重大度番号。
STATE DOUBLE
エラーメッセージの状態番号。
PARAMS ARRAY
エラーメッセージの追加情報。
戻り値¶
エラーメッセージのあるvarcharを返します。
使用例¶
入力:
出力:
PARSENAME_UDF¶
定義¶
このユーザー定義関数(UDF)は、 「.」 で区切られた 文字列 の PART_NUMBER インデックスを取得します。
パラメーター¶
STR VARCHAR
文字列 としてのオブジェクト名。
PART_NUMBER INT
確認するオブジェクト名の部分。
戻り値¶
オブジェクト名の指定された部分を返します。
使用例¶
入力:
出力:
ERROR_STATE_UDF¶
定義¶
このユーザー定義関数(UDF)は、何回実行されても、 CATCH ブロックのスコープ内のどこで実行されても、エラー状態を取得します。
パラメーター¶
入力パラメーターはありません。
戻り値¶
何回実行されても、また CATCH ブロックのスコープ内のどこで実行されても、エラー状態の 文字列 を返します。
使用例¶
入力:
出力:
CAST_TIME_TO_TIMESTAMP_TZ_UDF (TIME)¶
定義¶
このユーザー定義関数(UDF)は、 time を timestamp_tz にキャストします。
パラメーター¶
INPUT TIME
timestamp_tz にキャストされる入力時間。
戻り値¶
日付が1900-01-01で、入力と同じ時間の timestamp_tz を返します。
使用例¶
入力:
出力:
SUM_TIMESTAMP_TZ_UDF (TIMESTAMP_TZ, TIMESTAMP_TZ)¶
定義¶
このユーザー定義関数(UDF)は、両方の入力をシステムまたはセッションのタイムゾーンに変換し、1900-01-01 00:00:00.000をゼロ値として日付を合計します。どの値にもタイムゾーンが含まれていない場合は、現在のセッションのタイムゾーンが使用されます。
パラメーター¶
FIRST_DATE TIMESTAMP_TZ
加算先の最初の日付。
SECOND_DATE TIMESTAMP_TZ
加算先の2番目の日付。
戻り値¶
入力された2つの日付の和を返します。
使用例¶
入力:
出力:
GET_WEEK_START_UDF¶
定義¶
このユーザー定義関数(UDF)は、WEEK_STARTの構成を取得するもので、@@FIRSTDATE関数と等価です。プラットフォーム間の一貫性を保つため、WEEK_START パラメーターがTransact-SQLのDATEFIRST設定と一致していることを確認してください。
戻り値¶
週の最初の曜日を表す数値を返します。
使用例¶
SnowflakeのWEEK_STARTのデフォルト値は 0 です。しかし、この関数は、Transact-SQLのデフォルト値DATEFIRSTに合わせるため、 7 を返し、一貫した動作を保証します。
入力:
出力:
DATE_PART_WEEK_DAY_UDF¶
定義¶
このユーザー定義関数(UDF)は、曜日を数字(1~7)で取得します。プラットフォーム間の一貫性を確保するため、WEEK_START パラメーターをTransact-SQLのDATEFIRST設定と同じ値に設定してください。
パラメーター¶
INPUT DATE
曜日を取得する日。
戻り値¶
月曜=1、火曜=2、...日曜=7のように、曜日を表す数値を返します。
使用例¶
WEEK_STARTパラメーターは0であるため、DATE_PART_WEEK_DAY_UDFは値1を返します。
入力:
出力:
SCOPE_IDENTITY()¶
定義¶
The SCOPE_IDENTITY() function in SQL Server returns the last identity value inserted into an identity column in the same scope. SnowConvert AI transforms this function into a time-travel query using AT(STATEMENT =>) to retrieve the identity value from the most recent INSERT statement.
Transformation Pattern¶
SQL Server:
Snowflake:
Requirements¶
Only works within procedural contexts (stored procedures, functions) that are transformed to SnowScript
Requires an identity column defined on the target table using
IDENTITY(seed, increment)The preceding INSERT statement must target a table with a resolvable identity column in the symbol table
Usage Example¶
Input (SQL Server):¶
Output (Snowflake):¶
Known Limitations¶
Nested Scope Edge Case¶
When SCOPE_IDENTITY() is used inside a nested BEGIN...END block while the INSERT statement is in the outer procedure body, the transformation may not detect the INSERT correctly:
In this case, SnowConvert AI may generate SSC-EWI-TS0095 indicating that no preceding INSERT was found, even though one exists at a different nesting level. This is a known limitation tracked for future enhancement.
Workaround: Refactor the code to keep SCOPE_IDENTITY() in the same block as the INSERT statement.
Batch Context¶
SCOPE_IDENTITY() is not transformed in batch contexts (scripts outside of procedures/functions). In such cases, the original function call is preserved with SSC-EWI-0073.
Additional Notes¶
The
AT(STATEMENT =>)time-travel clause may return incorrect results under high-concurrency scenarios where multiple sessions insert into the same table simultaneouslyFor more information about time-travel queries, see the Snowflake documentation