为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows
【CPU】: i5
【问题描述】*:创建存储过程执行语句时提示“数据类型不匹配”
这是失败的sql:
CREATE OR REPLACE PROCEDURE behavior_course_action_time_pro("BeginDate" IN DATE,"EndDate" IN DATE,"TermInfoName" IN VARCHAR(25))
AUTHID CURRENT_USER
AS SQLStmt1 varchar2(1000);
BEGIN
IF TermInfoName IS NOT NULL
THEN
TermInfoName := REPLACE(TermInfoName,'-','_');
SET SQLStmt1 := CONCAT('insert into "',TermInfoName,'_behavior_course_action_time"("id","schedule_id", "user_id", "type", "time", "photo_url", "creator", "lastEditor", "createTime", "lastEditTime", "remark")select "id","schedule_id", "user_id", "type", "time", "photo_url", "creator", "lastEditor", "createTime", "lastEditTime", "remark" from "behavior_course_action_time" where trunc("time") between ',BeginDate,' and ',EndDate,';');
PRINT('SQLStmt1='||SQLStmt1);
EXECUTE IMMEDIATE SQLStmt1;
-- DEALLOCATE PREPARE stmt1;
-- PREPARE stmt2 FROM SQLStmt2;
END IF;
END;
然后是调用执行的语句
CALL behavior_course_action_time_pro('2023-12-13 14:38:41','2023-12-20 14:38:41','2023-01')
动态sql的最后部分加上单引号
因为使用concat函数,拼接传参的字段时时间字段不会带上引号可以在拼接这些字段时带上引号来解决