我正在研究PL / SQL Oracle Web应用程序,我需要创建一个处理文件上载表单的过程。文件上载表单字段名称为new_photo
。这是我的代码,但我提交时总是收到错误。我无法在线或在oracle文档中找到此任务的任何示例。
错误:
Error 6550 calling procedure:
ORA-06550: line 2, column 3:
PLS-00306: wrong number or types of arguments in call to 'INSERT_NEW_PHOTO'
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
The last SQL statement executed was:
begin
insert_new_photo(:B1,:B2,:B3,:B4,:B5,:B6,:B7,:B8);
end;
代码:
CREATE OR REPLACE PROCEDURE insert_new_photo (new_photo VARCHAR2 DEFAULT NULL) IS
BEGIN
-- if the user didn't chose a file to upload
IF new_photo IS NULL OR LENGTH( new_photo ) = 0
THEN
print_page_header;
print_error( 'Please supply a file name.' );
print_upload_form;
--print_page_trailer( TRUE );
return;
END IF;
END insert_new_photo;
/
形式:
<form action="insert_new_photo" method="post" enctype="multipart/form-data">
<input type="text" name="new_photo"><br>
<input type="submit" value="ok">
</form>
答案 0 :(得分:3)
您使用的是mod_plsql吗?如果是这种情况,我认为您不能将文件直接发送到PL / SQL过程:您必须定义一个特定的表并修改相关的DAD参数(参见http://docs.oracle.com/cd/E14571_01/portal.1111/e12041/concept.htm#i1005866)。
HTH。
的Alessandro
答案 1 :(得分:1)
如果我错了,请纠正我,但你的问题似乎是你在调用程序时有太多的论据
insert_new_photo(:B1,:B2,:B3,:B4,:B5,:B6,:B7,:B8);
这里有8个参数,程序本身只有一个
insert_new_photo (new_photo VARCHAR2 DEFAULT NULL)