gpt4 book ai didi

sql - 使用绑定(bind)变量动态传递表和列名

转载 作者:行者123 更新时间:2023-12-03 15:08:23 25 4
gpt4 key购买 nike

有没有办法使用绑定(bind)变量将列名和表名动态传递给查询?这可以通过使用简单的连接运算符 || 来完成。 ,但我想要一种不同的方法来实现这一点。

编辑

OPEN abc_cur FOR 'Select :column_name
from :table_name'
USING column_name,table_name;

在此示例中,我通过 column_nameempno,enametable_nameemp
但是这种方法对我不起作用。除了传统的连接方法之外,是否有可能采用不同的方法?

最佳答案

表名和列名不能作为绑定(bind)变量传递,不。绑定(bind)变量的全部意义在于,Oracle 可以为语句生成一次查询计划,然后使用不同的绑定(bind)变量值执行多次。如果优化器不知道正在访问哪个表或正在选择和过滤哪些列,它就无法生成查询计划。

如果您担心 SQL 注入(inject)攻击,并假设动态 SQL 确实是必要的(大多数情况下,需要诉诸动态 SQL 意味着数据模型存在问题),您可以使用 DBMS_ASSERT package验证表名和列名不包含嵌入式 SQL。

关于sql - 使用绑定(bind)变量动态传递表和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com