0

我试图让一个 JAVA 程序(确切地说是 Pega)通过调用存储过程来调用该过程来加载 XML 数据,但它不起作用,我做错了什么?我知道这与我的变量定义有关,但我不确定如何指定它们将由 java 文件提供参数。下面是我的存储过程。提前致谢

我收到的错误消息是:

错误(2,16):PLS-00103:遇到符号“;” 当期望以下之一时: := 。) , @% 默认字符

错误(16,1):PLS-00103:在预期以下情况之一时遇到符号“)”:开始函数杂注过程子类型当前光标删除之前存在

Create or Replace Procedure Cascade_Load (
    Value_ID Number,
    pValue_ID Number,
    pCalculation_ID Number,
    Calculation_ID Number,
    Calculation_Value_ID Number,   
    p_Entity_Address_ID Varchar2(50),
    New_Value_ID Number,
    New_Calculation_ID Number,
    New_Calculation_Value_ID Number
) AS
    BEGIN
        IF code is not null
        THEN
            INSERT INTO Value (Value_ID, energy_product_id, data_source_id, unit_cd, 
                value_tx, padd_cd, supply_type_id, country_cd, state_cd, county_cd, 
                entity_address_id,  series_id, energy_process_cd, result_type_cd, 
                geo_area_cd, create_dt, create_user_id)
            VALUES ( 
                Value_ID, 
                Get_energy_product_id(:NEW.Product_Name_Cd),
                Get_Data_Source_Id(:NEW.Data_Source_Tx),
                :NEW.UNIT_CD ,
                :NEW.Value_Tx,
                :NEW.PADD_CD,
                Get_Supply_Type_Id(:NEW.Supply_Type_Tx),
                :NEW.COUNTRY_CD,
                Get_State_CD(Get_entity_Id(p_Entity_Address_ID)),
                'NA',
                Get_Entity_Address_ID(Get_Entity_ID(p_Entity_Address_ID)),
                0,
                :NEW.Energy_Process_CD,
                :NEW.Result_Type_CD,
                :NEW.Geo_Area_Cd,
                Sysdate,
                '15'
            );
            Commit;
            END IF;
            END;
4

3 回答 3

0

:NEW 和 :OLD 变量仅在 TRIGGERS 中使用。

然后你不能在存储过程中绑定。

于 2018-02-14T19:52:29.020 回答
0

在存储过程的参数中用逗号替换分号

于 2018-02-14T19:32:21.800 回答
0

@icerabbit

不确定使用分号而不是逗号分隔参数是否是语法错误。如果是这种情况,您在编译时会收到一条错误消息。SP 主体中的代码是什么,是未定义的变量吗?如果 Value 是表名,请尝试将其括在大括号中。如果您看到错误消息,请也发布它,它会为进一步调试提供一些想法。

谢谢

于 2018-02-14T19:26:14.563 回答