【发布时间】:2012-07-31 13:17:15
【问题描述】:
我有一个程序,我试图根据高于规定参数的度量值来选择结果。但是,我希望大于可以更改为等于或小于。
我尝试用 > 代替参数,但它给了我错误: sql 语法错误:“PARAM_OP”附近的语法不正确(其中 PARAM_OP 是应替换为操作符的参数的名称。
欢迎任何想法。
代码如下:
var_out =
SELECT
"Col1" AS "Col1",
"Col2" AS "Col2",
"Col3" AS "Col3",
SUM(Col4) AS "Col4"
FROM <schema>.<view>
WHERE "Col2" = PARAM_1
GROUP BY Col1, Col2, Col3
HAVING SUM(Col4) > PARAM_2
ORDER BY SUM(Col4);
【问题讨论】:
-
param_op 在这段代码中的位置?
-
您的其中一行是否显示:HAVING SUM(Col4) PARAM_OP PARAM_2 如果是这样,您可能想要使用动态 SQL。
-
您不能将参数用于 SQL 语句的结构部分 - 因此不能用于任何关键字、运算符或标识符。参数只能出现在您期望值表达式的位置。 IOW 参数是在查询时间之前绑定到“真实”值的值的占位符。解决方案是在您的应用程序代码中生成 SQL 语句,并执行该生成的语句。另见stackoverflow.com/questions/11518315/…
-
Paddy - PARAM_OP 将替换 > 运算符。
-
Aushin - 这将如何在动态 SQL 中创建? Roland / Holder - 我使用的是 Hana 数据库,所以我宁愿让所有代码生成服务器端来利用处理能力。
标签: sql parameters equals operator-keyword procedural