试图通过存储过程将数据插入到各种表中,我做错了什么?

时间:2018-02-14 19:12:10

标签: sql oracle tsql plsql pega

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

我收到的错误消息是:

  

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

  

错误(16,1):PLS-00103:遇到以下其中一项时遇到符号“)”:begin function pragma procedure子类型当前游标删除存在

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;

3 个答案:

答案 0 :(得分:0)

@icerabbit

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

谢谢

答案 1 :(得分:0)

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

答案 2 :(得分:0)

:NEW和:OLD变量仅用于TRIGGERS。

您无法在存储过程中进行绑定。