存储过程SQL语句被忽略

时间:2014-04-20 19:59:01

标签: stored-procedures peoplesoft peoplesoft-app-engine

我正在编译这个存储过程并得到一些错误:尝试在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;

请告诉我这个,我开始新的。谢谢!

2 个答案:

答案 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 ;;"