我正在尝试创建一个过程,该过程将根据作为参数提供的日期创建一个表。 该过程似乎很顺利,但是当我尝试运行它时,我得到“ORA-00904:“END_DATE”:无效标识符”。
CREATE OR REPLACE PROCEDURE ddl_sp (begin_date nvarchar2, end_date nvarchar2) AS
BEGIN
EXECUTE IMMEDIATE q'[
CREATE TABLE
sao_eligible_members_tbl AS
SELECT
h.pay_order_date
FROM
clm_header_h h
WHERE
TO_CHAR( h.pay_order_date, 'YYYYMM' ) BETWEEN begin_date AND end_date
]';
END ddl_sp;
/
BEGIN
ddl_sp('202301', '202401');
END;
请不要询问为什么日期是这样的;这不是我的选择。他们工作。
使用
USING
子句将参数传递到查询中的绑定变量中:
CREATE OR REPLACE PROCEDURE ddl_sp (begin_date nvarchar2, end_date nvarchar2) AS
BEGIN
EXECUTE IMMEDIATE q'[
CREATE TABLE
sao_eligible_members_tbl AS
SELECT
h.pay_order_date
FROM
clm_header_h h
WHERE
TO_CHAR( h.pay_order_date, 'YYYYMM' ) BETWEEN :1 AND :2
]' USING start_date, end_date;
END ddl_sp;
/