2013-04-30 169 views
3

我正试图将答案插入用户的安全问题,以便在引脚重置功能中使用。PLS-00103:遇到符号“;”当期待以下其中一项时:

Ellucian banner v8 +提供了一个用于运行这个API的API,并且我对他们的API非常新,并且从下面的错误消息的外观来看,我远远没有正确运行它。任何帮助表示赞赏。

我试着在Oracle SQL Developer中运行以下命令:

execute gb_pin_answer.p_create(
    P_PIDM  => 12345, 
    P_NUM   => 1, 
    p_gobqstn_id => 1, 
    p_qstn_desc => '', 
    p_ansr_desc => 'David', 
    p_ansr_salt => 'A123B456', 
    p_user_id  => 'W:H12345678', 
    p_data_origin => 'WWW_USER', 
    p_rowid_out   OUT gb_common.internal_record_id_type 
); 

这是一个在黑暗中拍摄,但我想我给它试图执行该程序包的p_create时显示一个镜头,错误信息功能:

错误起始于第15行中的命令:执行gb_pin_answer.p_create( 错误报告:ORA-06550:行1,列30:PLS-00103:出现 符号 “;” 期待的一个时如下:

() - +案例MOD新NOT NULL表继续平均算 当前存在的最大分钟前SQL STDDEV和方差执行 多重集两个领先尾随FORALL合并年月日时 分秒timezone_hour timezone_minute timezone_region timezone_abbr时间时间戳间隔日期 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常是PL/SQL编译错误。 *操作:

错误在命令开始在第16行:P_PIDM => 12345,错误 报告:未知指令

在命令开始于17行错误:P_NUM => 1,错误报告: 未知指令

在命令开始于18行错误:p_gobqstn_id => 1,错误报告: 未知指令

在命令开始于19行错误:p_qstn_desc => '',错误报告 :未知通讯和

错误开始在第20行中的命令:p_ansr_desc => '大卫',错误 报告:未知指令

错误在命令开始在第21行:p_ansr_salt => 'A123B456', 错误报告:未知命令

错误在命令开始在管线22:p_user_id => 'W:H12345678', 错误报告:未知命令

在命令开始于23行错误:p_data_origin => 'WWW_USER', 错误报告: 未知的命令

从第24行开始的命令错误:p_rowid_out OUT gb_common。internal_record_id_type错误报告:未知命令

错误的命令开始在第25行:)错误报告:未知命令

这是我在使用此功能,p_create读了起来:http://inb1.banner.ecu.edu:9090/api_erd_index_guide/api/general/gb_pin_answer.html#p_create

更新:代码是示数出来:

SET SERVEROUTPUT ON 
declare 
    l_rowid_out gb_common.internal_record_id_type; 
BEGIN 
    gb_pin_answer.p_create(P_PIDM => 36706, P_NUM => 1, P_GOBQSTN_ID => 1, P_QSTN_DESC => '', P_ANSR_DESC => 'David', P_ANSR_SALT => 'HB123456', P_USER_ID => 'H00036657', P_DATA_ORIGIN => 'WWW_USER', P_ROWID_OUT => 1_rowid_out); 
    dbms_output.put_line('rowid: ' || l_rowid_out); 
END; 

错误消息:

错误报告:ORA-06550:行4,列199:PLS-00363:表达式 '1' 不能用来作为分配目标ORA-06550:行4,列3: PL/SQL:语句忽略 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常是PL/SQL编译错误。 *操作:

回答

5

问题是execute。这实际上是一个简短的匿名PL/SQL块的简写,不能跨行分割。 (除了延续角色,但我不记得如果我有这个工作)。只有第一行是翻译,所以它的有效尝试运行:

begin execute gb_pin_answer.p_create(; end; 
/

...它相当合理然后不喜欢的p_create(;结束命令。接下来的过程调用将被视为10个单独的命令,这些命令会产生您获得的其他错误,并且在这种情况下它们也是合理的。

解决方法是将整个过程调用放在一行上,这会使读取更难;或者干脆用自己的块,而不是依赖于execute

begin 
    gb_pin_answer.p_create(
     ... 
    ); 
end; 
/

最后一个参数是不正确的,虽然; OUT ...的位需要替换为=> some_value,就像你对其他人所做的那样。但它是一个输出参数,所以你需要一些东西来把值放进去。没有看到你正在运行的脚本还有什么,我不知道你是否已经照顾它,但是用这种模式,你可以可能只是一个变量添加到匿名块:

set serveroutput on 
declare 
    l_rowid_out gb_common.internal_record_id_type; 
begin 
    gb_pin_answer.p_create(
     ... 
     p_rowid_out => l_rowid_out 
    ); 
    -- optional 
    dbms_output.put_line('rowid: ' || l_rowid_out); 
end; 
/
+0

我想: SET SERVEROUTPUT ON 声明 l_rowid_out gb_common.internal_record_id_type; P_DSR_DESC =>'David',P_ANSR_SALT =>'HB123456',P_USER_ID =>'H00036657',P_DATA_ORIGIN(P_PIDM => 36706,P_NUM => 1,P_GOBQSTN_ID => 1,P_ANSR_DESC =>'David',P_ANSR_SALT =>'H123456' =>'WWW_USER',P_ROWID_OUT => 1_rowid_out); dbms_output。put_line('rowid:'|| l_rowid_out); END;错误消息的 / – Brad 2013-05-01 14:31:42

+0

片段,它返回: 错误报告: ORA-06550:行4,列215: PLS-00103:出现符号 “_” 在需要下列之一时: ),*& = - + at in是mod余数不是rem <>或!=或= => = <= <>和或类似于2 like4 likec between || multiset member submultiset *,在“_”之前插入以继续。 06550. 00000 - “line%s,column%s:\ n%s” *原因:通常是PL/SQL编译错误 *行动: – Brad 2013-05-01 14:32:54

+0

@布拉德 - 你真的有'1_rowid_out'而不是'l_rowid_out'作为参数吗? – 2013-05-01 14:33:03

0

从最后一次编辑,我看到你misstaken 1l ... 1_rowid_out,而不是l_rowid_out

你不能用你想要的数字来启动一个变量。

相关问题