点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在尝试创建如下所示的存储过程。 但是无论我做什么,我似乎都无法解析它。 我总是会收到此错误。 在这方面的任何帮助将不胜感激。 提前致谢。
/*****
SAP DBTech JDBC:[467]:无法使用参数变量:V_LAST_RUN_DATE:
****/
ALTER PROCEDURE" MY_SCHEMA"。" MY_STOREDPROC"
语言SQLSCRIPT
AS
开始声明v_last_run_date时间戳;
在MY_TIME_TABLE的MY_TIME_TABLE中将max(MY_TS)选择为v_last_run_date。NAME='SOMETHING';
创建表" MY_SCHEMA"。" THE_TABLE_TO_POPULATE"
AS(
选择A.ATT_1
,B.ATT_2
,C.ATT_3
,D.ATT_4
从" MY_SCHEMA"。" TABLE_A" A
INNER JOIN" MY_SCHEMA"。" TABLE_B" B在A.JKEY = B.JKEY上
INNER JOIN" MY_SCHEMA"。" TABLE_C" C ON B.KKEY = C.KKEY
INNER JOIN" MY_SCHEMA"。" TABLE_C" D ON C.LKEY = D.LKEY
输入A.ID(选择E.PAT_ID
FROM" MY_SCHEMA"。" TABLE_X" M
内联接" MY_SCHEMA"。" TABLE_X" R ON M.ID = R.ID
INNER JOIN" MY_SCHEMA"。" TABLE_X" E ON R.ANOTHER_ID = E.ANOTHER_ID
内部联接(从" MY_SCHEMA"中选择SOME_ATT。" SOME_TABLE" THE_TS> = v_last_run_date)C ON M.ID = C.SOME_ATT)); 承诺; END;
您不能在"创建表"语句中使用v_last_run_date。 要么使用动态sql(我不推荐),要么在Create Table语句(定义表)和insert语句(可以使用v_last_run_date)中拆分语句。
通常, 对于表的创建,我的程序尚不清楚。 如果多次执行相同的程序怎么办? 万一您没有在每次执行之前删除表,它将失败。
谢谢。 我认为就是这样。 为了简化将其发布到此处的工作,我在代码删除表的地方排除了代码。 实际上,现在我对下降有疑问。 在我的存储过程中,如果表存在,我试图先删除该表,再调用另一个存储过程。 看起来就是这样-
/*************************
创建过程CDWH.SP_DROP_TABLE_IF_EXISTS(
IN v_schema varchar(50),
IN v_table varchar(50))
语言SQLSCRIPT
AS
开始
DECLARE v_rowcount int:= 0;
SELECT TABLE_NAME
从" SYS"到"表"。
SCHEMA_NAME =:v_schema
AND TABLE_NAME =:v_table;
v_rowcount:= :: ROWCOUNT;
如果v_rowcount> 0,然后
EXEC'DROP TABLE'||:v_schema ||'。'||:v_table;
END IF;
END;
*****************************/
当我在其他存储过程中调用此存储过程时,这似乎没有任何作用,因为它似乎没有删除表,并且调用上述存储过程的存储过程失败,表明存在重复表 在架构中。 这是上面存储的proc试图删除的表。 但是,如果我手动并分别运行上述存储的proc,然后再运行其他存储的proc,它似乎可以工作。 这意味着在其他存储过程中调用上述存储过程不起作用。
您有这些问题吗? 有什么我做不对的事情吗?
预先感谢。
一周热门 更多>