绑定变量:某些内置表函数的参数不再被忽略¶
在 Snowflake Scripting、驱动程序 或 SQL REST API 中,您可以在 SQL 语句中使用绑定变量。(有关使用绑定变量的示例,请参阅 在 SQL 语句中使用变量(绑定)、绑定数据 和 在语句中使用绑定变量。)
此行为变更会影响直接将绑定变量作为 下列内置表函数实参 之一传递的情况。行为变更如下所示:
- 变更前:
系统将忽略绑定变量,并且不会将实参传递给表函数。
- 变更 AFter:
绑定变量将作为实参传递给表函数。
请注意,这并不影响先将绑定变量传递给其他函数,然后再将结果传递给表函数实参的情况。例如,如果要调用 COPY_HISTORY 函数,则此更改会影响将绑定变量直接作为 START_TIME 实参传递的情况:
COPY_HISTORY( START_TIME=> ?, ...
这不会影响先将绑定变量传递给另一个内置函数的情况:
COPY_HISTORY( START_TIME=> DATEADD('days', ?, ...
如果要保留更改前的行为,可以重写代码,避免传递使用绑定变量的实参。例如,如果要调用 TASK_HISTORY 函数,并且不希望按特定任务筛选结果,可省略调用中的 TASK_NAME 实参。
以下表函数实参会受此更改的影响:
表函数 |
受影响的实参 |
---|---|
OBJECT_TYPE |
|
OBJECT_NAME |
|
TABLE_NAME |
|
START_TIME |
|
ROOT_TASK_NAME |
|
RESULT_LIMIT |
|
TABLE_NAME |
|
LOCATION |
|
FILE_FORMAT |
|
FILES |
|
POLICY_NAME |
|
REF_ENTITY_NAME |
|
REF_ENTITY_DOMAIN |
|
END_TIME_RANGE_START |
|
END_TIME_RANGE_END |
|
RESULT_LIMIT |
|
SESSION_ID |
|
RESULT_LIMIT |
|
USER_NAME |
|
WAREHOUSE_NAME |
|
END_TIME_RANGE_START |
|
END_TIME_RANGE_END |
|
RESULT_LIMIT |
|
OBJECT_NAME( |
|
TASK_NAME |
|
RESULT_LIMIT |
|
TASK_NAME |
|
DATE_RANGE_START |
|
DATE_RANGE_END |
|
WAREHOUSE_NAME |
|
DATE_RANGE_START |
|
DATE_RANGE_END |
参考:1410