gpt4 book ai didi

oracle - Oracle 中是否可以通过绑定(bind)变量引用列名?

转载 作者:行者123 更新时间:2023-11-29 20:26:51 25 4
gpt4 key购买 nike

我试图在与 Oracle 数据库通信的应用程序中引用列名来排序查询。我想使用绑定(bind)变量,以便可以动态更改查询的排序依据。

我遇到的问题是数据库似乎忽略了按列的顺序。

有谁知道是否有一种特定的方法可以通过绑定(bind)变量引用数据库列,或者是否有可能?

例如我的查询是

SELECT * FROM PERSON ORDER BY :1

(其中 :1 将绑定(bind)到 PERSON.NAME)查询没有按字母顺序返回结果,我担心数据库将此解释为:-

SELECT * FROM PERSON ORDER BY 'PERSON.NAME' 

这显然行不通。

非常感谢任何建议。

最佳答案

没有。您不能对表名或列名使用绑定(bind)变量。

创建执行计划需要此信息。例如,如果不知道要按什么排序,就不可能弄清楚要使用什么索引。

当程序创建列名时,您必须直接将列名插入到 SQL 语句中,而不是绑定(bind)变量。假设您采取预防措施来防止 SQL 注入(inject),那么这没有什么坏处。

更新:如果你真的想跳过障碍,你可能会做类似的事情

order by decode(?, 'colA', colA, 'colB', colB)

但这太愚蠢了。而且很慢。不要。

关于oracle - Oracle 中是否可以通过绑定(bind)变量引用列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269669/

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