在用户定义函数中将表名作为参数传递

时间:2019-04-09 23:51:57

标签: python oracle snowflake

我想创建一个包含参数化查询的UDF。由于我想重用此函数,因此我也想参数化表名。在Snowflake Data Warehouse(或Oracle,因为在语法上有点相似)是否可​​行?

我不认为仅使用SQL就能做到这一点。关于如何使用Python实现的任何输入?

3 个答案:

答案 0 :(得分:1)

这是一个非常基本的编程问题,与Snowflake无关。因此,在这里问之前,您应该进行更多调查。但这是为您提供答案的草图:

=INDEX(IMPORTHTML("https://finance.yahoo.com/quote/O/key-statistics", "table", 10), 2, 2)

答案 1 :(得分:0)

在Oracle中,不能将表名用作绑定变量。查询是在编译时而不是运行时解析的。您必须使用EXECUTE IMMEDIATEdbms_sql

答案 2 :(得分:0)

@MarcinZukowski感谢您提供信息。是的,我检查了它,他们计划在六月推出。我只有查询来验证UDF中的PK约束,而不必在UDF中。 我的CSV看起来像这样,它具有表名及其主键:

|  Table Name  |  Primary Key  | 
|    Table 1   |     Col1      |  
|    Table 1   |     Col2      |
|    Table 1   |     Col3      | 
|    Table 2   |     Col11     | 
|    Table 2   |     Col12     | 

我想针对此CSV中的每个表执行以下查询。在这里,表名可以是单个参数,但由于表可以具有1个或多个主键,因此列名必须有所不同。

select Col1, Col2, Col3 from Table1
group by Col1, Col2, Col3
having count(*)>1