以下是存储过程: SQL> CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\aa'; --图片目录
目录已创建。
SQL> CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER(38),FILENAME VARCHAR2) AS
2 F_LOB BFILE;
3 B_LOB BLOB;
4 BEGIN
5 INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS) --表的两个字段
6 VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
7 F_LOB:= BFILENAME ('IMAGES', FILENAME);
8 DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
9 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
10 DBMS_LOB.GETLENGTH (F_LOB));
11 DBMS_LOB.FILECLOSE (F_LOB);
12 COMMIT;
13 END;
14 /结果是: Warning: proedure created with compilation errors我仔细检查了,不知道是哪错了,求助大家!
目录已创建。
SQL> CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER(38),FILENAME VARCHAR2) AS
2 F_LOB BFILE;
3 B_LOB BLOB;
4 BEGIN
5 INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS) --表的两个字段
6 VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
7 F_LOB:= BFILENAME ('IMAGES', FILENAME);
8 DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
9 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
10 DBMS_LOB.GETLENGTH (F_LOB));
11 DBMS_LOB.FILECLOSE (F_LOB);
12 COMMIT;
13 END;
14 /结果是: Warning: proedure created with compilation errors我仔细检查了,不知道是哪错了,求助大家!
解决方案 »
- 横表转纵表 高手给个方案
- 将txt文件中2-8行的系数插入oracle数据库表test1,怎么用shell实现?
- 存储过程报错:oracle ORA-00904 invalid identifier
- =========如何提取表中某个字段的默认值?============
- 如果我数据库某条记录有2条以上,我想只保留一条,如何用sql语句实现?
- 如何在VC环境下利用OO4O接口访问ORACLE?(在VC6环境下使用过OO4O访问ORACLE的DX请进)
- 在oracle中在两个整型值之间执行按位逻辑与运算的运算符是什么?类似sql中的&
- 使用:用户名/密码/SID连接不了,使用:用户名/密码可以连接.请问原因
- oracle的密码问题
- oracle trigger 条件的使用
- 请大家帮忙比较下
- 创建表的问题
:= .) , @ % default character
The symbol ":=" was substituted for "(" to continue.1/55 PLS-00103: Encountered the symbol "(" when expecting one of the following:
:= .) , @ % default character
The symbol ":=" was substituted for "(" to continue.
这个不能带有38 只能写成TID NUMBER
>>> TID NUMBER把精度去掉试试。
compile error,是简单的语法错误, 这个没有必要放到这里来一点点的问了,效率太低。你用plsql developer或者toad,或者oracle sql developer 在工具里compile一下,这些工具会把语法错误的行都标识出来的,你一个一个的排查了。这样高效。
2 AS
3 F_LOB BFILE;
4 B_LOB BLOB;
5 BEGIN
6 INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS)
7 VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
8 F_LOB:= BFILENAME ('IMAGES', FILENAME);
9 DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
10 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
11 DBMS_LOB.GETLENGTH (F_LOB));
12 DBMS_LOB.FILECLOSE (F_LOB);
13 COMMIT;
14* END;
WANGZK>/警告: 创建的过程带有编译错误。WANGZK>SHOW ERRORS
PROCEDURE IMG_INSERT 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------
5/2 PLS-00103: 出现符号 ""在需要下列之一时:
begin function package pragma
procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
符号 "" 被忽略。WANGZK>ED 1 CREATE OR REPLACE PROCEDURE IMG_INSERT (TID NUMBER,FILENAME VARCHAR2)
2 AS
3 F_LOB BFILE;
4 B_LOB BLOB;
5 BEGIN
6 INSERT INTO CVRESULTS (COMPUTER_IDN, RESULTS)
7 VALUES (TID,EMPTY_BLOB ()) RETURN RESULTS INTO B_LOB;
8 F_LOB:= BFILENAME ('IMAGES', FILENAME);
9 DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
10 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
11 DBMS_LOB.GETLENGTH (F_LOB));
12 DBMS_LOB.FILECLOSE (F_LOB);
13 COMMIT;
14* END;
WANGZK>/过程已创建。
其实你的过程没有啥错误,只不过是你在网上粘贴的问题,有些特殊符号也粘贴过来了.你可以自己手动的清除下空格和空行.或者自己手工的重新输入一次就应该OK了.看看你的报错信息是不是和我上面的报错信息一致.