我试图将答案插入用户的安全问题,以便在引脚重置功能中使用.
Ellucian banner v8 +提供了一个用于运行它的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
);
Run Code Online (Sandbox Code Playgroud)
这是一个黑暗中的镜头,但我想我会给它一个镜头,在尝试执行该包的p_create函数时显示错误消息:
在命令的第15行开始出错:执行gb_pin_answer.p_create(错误报告:ORA-06550:第1行,第30列:PLS-00103:遇到以下其中一项时遇到符号";":
() - + case mod new not null table continue avg count current current last max before sql stddev sum variance execute multiset the leading taililing forall merge year month day hour minute second timezone_hour timezone_minute timezone_region timezone_abbr time timestamp interval date 06550. 00000 - "line" %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 =>'David',错误报告:未知命令
在命令的第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;
Run Code Online (Sandbox Code Playgroud)
错误消息:
错误报告:ORA-06550:第4行,第199列:PLS-00363:表达式"1"不能用作赋值目标ORA-06550:第4行第3列:PL/SQL:语句忽略06550. 00000 - "行%s,列%s:\n%s"*原因:通常是PL/SQL编译错误.*行动:
问题是execute.这实际上是一个简短的匿名PL/SQL块的简写,并且不能跨行分割.(除了可能有一个延续角色,但如果我有工作的话,我不记得副手).只翻译了第一行,因此它有效地尝试运行:
begin execute gb_pin_answer.p_create(; end;
/
Run Code Online (Sandbox Code Playgroud)
......而且它非常合理地不喜欢结尾的命令p_create(;.然后将过程调用的其余部分视为10个单独的命令,这些命令会生成您获得的其他错误,并且在该上下文中它们也是合理的.
解决方案是将整个过程调用放在一行,这将使其更难阅读; 或者只是使用自己的块,而不是依赖于execute:
begin
gb_pin_answer.p_create(
...
);
end;
/
Run Code Online (Sandbox Code Playgroud)
最后一个参数不对; OUT ...需要替换的一点=> some_value,就像你已经完成了其他人一样.但它是一个out参数,所以你需要一些东西来把价值放进去.没有看到你正在运行的脚本中还有什么我不知道你是否已经处理过它,但是你可以用这种模式可能只是向匿名块添加一个变量:
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;
/
Run Code Online (Sandbox Code Playgroud)