0

我正在编译这个存储过程并得到一些错误: Trying to compile this in oracle SQL developer。

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;

请给我建议,我开始新的。谢谢!

4

2 回答 2

1

%CURRENTDATETIMEIN 元 SQL 仅在人员代码和 PeopleSoft SQL 中可用。您不能在存储过程中使用它。我建议您编写一个 App Engine 来编写代码,这是在 peoplesoft 中开发流程的常用方法。但如果您必须继续使用 SP,只需将其更改为 SYSDATE。

于 2014-05-10T04:27:30.063 回答
0

在 PeopleSoft 中,如果基础数据库是 ORACLE,则元 SQL %CURRENTDATETIMEIN 被转换为“CAST(SYSTIMESTAMP AS TIMESTAMP)”。您可以在 PeopleSoft 应用程序设计器工具的新 SQL 对象中键入您的 PeopleSoft SQL。输入完 SQL 后,右键单击并从弹出菜单中选择“Resolve Meta SQL”。您将在输出窗口的 Meta SQL 选项卡中看到 Oracle SQL 翻译。在 Oracle 的PeopleTools 8.52 PeopleCode Developer's Guide中搜索“meta-SQL,resolving”的索引。

要修复您的存储过程,请进行以下更改:更改“UPDATE PS_CGF_SEQ_TBL SET DTTM_STAMP_SEC = %CURRENTDATETIMEIN, SEQ_NBR = SEQ_NBR + NUM WHERE SEQ_NAME = 'CGF_WIP_ID';”

“更新 PS_CGF_SEQ_TBL SET DTTM_STAMP_SEC = CAST(SYSTIMESTAMP AS TIMESTAMP), SEQ_NBR = SEQ_NBR + NUM WHERE SEQ_NAME = 'CGF_WIP_ID';”

于 2014-05-16T14:23:28.767 回答