我正在尝试通过调用存储过程来调用程序来加载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;
答案 0 :(得分:0)
@icerabbit
我不确定使用分号分隔参数而不是comas是否是语法错误。如果是这种情况,您在编译时会收到错误消息。 SP的主体中的代码是什么,是一个未定义的变量? 如果Value是表名,请尝试将其括在大括号中。 如果您看到错误消息,请发布,它会进一步调试。
谢谢
答案 1 :(得分:0)
在存储过程的参数中用逗号替换分号
答案 2 :(得分:0)
:NEW和:OLD变量仅用于TRIGGERS。
您无法在存储过程中进行绑定。