我正在编译这个存储过程并得到一些错误:尝试在oracle SQL开发人员中编译它。
忽略了SQL语句 字符无效
代码:
CREATE OR REPLACE PROCEDURE CGF_GEN_WIP( NUM IN VARCHAR2) AS
BEGIN
SELECT
SEQ_NBR
FROM
PS_CGF_SEQ_TBL
WHERE
SEQ_NAME = 'CGF_WIP_ID';
UPDATE PS_CGF_SEQ_TBL
SET DTTM_STAMP_SEC = %CURRENTDATETIMEIN, SEQ_NBR = SEQ_NBR + NUM
WHERE SEQ_NAME = 'CGF_WIP_ID';
END;
请告诉我这个,我开始新的。谢谢!
答案 0 :(得分:1)
%CURRENTDATETIMEIN Meta-SQL仅在peoplecodes和PeopleSoft SQL中可用。您不能在存储过程中使用它。 我建议你编写一个App Engine来编写代码,这是在peoplesoft中开发进程的常用方法。 但是如果你必须留在SP,只需将其更改为SYSDATE。
答案 1 :(得分:0)
在PeopleSoft中,Meta SQL%CURRENTDATETIMEIN被翻译为" CAST(SYSTIMESTAMP AS TIMESTAMP)"如果底层数据库是ORACLE。您可以在PeopleSoft Application Designer工具中的新SQL对象中输入PeopleSoft SQL。键入SQL后右键单击并选择" Resolve Meta SQL"从弹出菜单中。您将在输出窗口的Meta SQL选项卡中看到Oracle SQL转换。在索引中搜索" meta-SQL,解析"在Oracle的PeopleTools 8.52 PeopleCode Developer's Guide。
中要修复存储过程,请进行以下更改: 更改"更新PS_CGF_SEQ_TBL设置DTTM_STAMP_SEC =%CURRENTDATETIMEIN,SEQ_NBR = SEQ_NBR + NUM WHERE SEQ_NAME =' CGF_WIP_ID&#39 ;;"
To" UPDATE PS_CGF_SEQ_TBL SET DTTM_STAMP_SEC = CAST(SYSTIMESTAMP AS TIMESTAMP),SEQ_NBR = SEQ_NBR + NUM WHERE SEQ_NAME =' CGF_WIP_ID&#39 ;;"