【发布时间】:2021-06-04 20:45:20
【问题描述】:
我有一个针对过去一小时内下达的订单运行的查询。根据客户端,某些条件将应用于查询的 WHERE 子句。 SQL WHERE 子句存储在每个客户端的单独表中。
查询将如下所示:
SELECT * FROM ORDERS
WHERE <INSERT SQL STATEMEMT>
我创建了一个函数来从表中提取 SQL 语句。
CREATE OR REPLACE FUNCTION QUERY_SQL(
iCLIENTID VARCHAR(10))
RETURNS VARCHAR(4000)
LANGUAGE SQL
SPECIFIC FN_QUERY_SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN ATOMIC
DECLARE SQLQUERY VARCHAR(4000);
SET SQLQUERY=(SELECT CAST(SQL_STMT AS VARCHAR(4000))
FROM CONSUMER_NOTIFICATION
WHERE
CLIENT_ID=iCLIENTID
FETCH FIRST ROW ONLY
);
RETURN SQLQUERY;
END
我在将代码插入 WHERE 子句时遇到了问题。我尝试准备 SQL 代码,但这似乎不起作用,因为 SQL 只是 WHERE 子句而不是完整的查询。
我见过的 DB2 动态 SQL 基于 SQL 状态相当固定的参数值生成。我需要更改每个客户端的整个 WHERE 子句。
感谢您的帮助。
【问题讨论】:
标签: dynamic-sql db2-luw