- 论坛徽章:
- 0
|
SQL>; CREATE OR REPLACE PROCEDURE hd6_update_image(
2 table_name IN VARCHAR2,
3 rec_no_name IN VARCHAR2,
4 image_name IN VARCHAR2,
5 rec_no IN INTEGER,
6 image_len IN OUT BINARY_INTEGER,
7 image IN RAW)
8 IS
9 lob_loc BLOB;
10 sel_stmt VARCHAR2(500);
11 sel_cursor_id NUMBER;
12 ret NUMBER;
13
14 BEGIN
15
16 sel_stmt := 'SELECT ' || image_name || ' FROM ' || table_name || ' WHERE ' || rec_no_name || ' = :rno FOR UPDATE';
17 sel_cursor_id := dbms_sql.open_cursor;
18 dbms_sql.parse(sel_cursor_id, sel_stmt, dbms_sql.native);
19 dbms_sql.define_column(sel_cursor_id, 1, lob_loc);
20 dbms_sql.bind_variable(sel_cursor_id, ':rno', rec_no);
21 ret := dbms_sql.execute_and_fetch(sel_cursor_id);
22
23 IF ret >; 0 THEN
24
25 dbms_sql.column_value(sel_cursor_id, 1, lob_loc);
26 dbms_lob.open(lob_loc,dbms_lob.lob_readwrite);
27 dbms_lob.writeappend(lob_loc, image_len, image);
28 dbms_lob.close(lob_loc);
29
30 END IF;
31 dbms_sql.close_cursor(sel_cursor_id);
32 exception when others then
33 if dbms_sql.is_open(sel_cursor_id) then
34 dbms_sql.close_cursor(sel_cursor_id);
35 end if;
36 END hd6_update_image;
37 /
警告:已创建的过程出现编译错误。
SQL>; SHOW ERRORS
PROCEDURE HD6_UPDATE_IMAGE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
26/3 PL/SQL: Statement ignored
26/34 PLS-00302: 必须说明'LOB_READWRITE'组件
27/3 PL/SQL: Statement ignored
27/12 PLS-00302: 必须说明'WRITEAPPEND'组件
28/3 PL/SQL: Statement ignored
28/12 PLS-00302: 必须说明'CLOSE'组件
SQL>;
SQL>; CREATE OR REPLACE PROCEDURE hd6_read_image(
2 table_name IN VARCHAR2,
3 rec_no_name IN VARCHAR2,
4 image_name IN VARCHAR2,
5 rec_no IN INTEGER,
6 image_len IN OUT BINARY_INTEGER,
7 offset IN INTEGER,
8 image OUT RAW)
9 IS
10 lob_loc BLOB;
11 sel_stmt VARCHAR2(500);
12 sel_cursor_id NUMBER;
13 ret NUMBER;
14 BEGIN
15 sel_stmt := 'SELECT ' || image_name || ' FROM ' || table_name || ' WHERE ' || rec_no_name || ' = :rno';
16 sel_cursor_id := dbms_sql.open_cursor;
17 IF dbms_sql.is_open(sel_cursor_id) THEN
18 dbms_sql.parse(sel_cursor_id, sel_stmt, dbms_sql.native);
19 dbms_sql.define_column(sel_cursor_id, 1, lob_loc);
20 dbms_sql.bind_variable(sel_cursor_id, ':rno', rec_no);
21 ret := dbms_sql.execute_and_fetch(sel_cursor_id);
22 IF ret >; 0 THEN
23 dbms_sql.column_value(sel_cursor_id, 1, lob_loc);
24 dbms_lob.open(lob_loc, dbms_lob.lob_readonly);
25 dbms_lob.read(lob_loc, image_len, offset, image);
26 dbms_lob.close(lob_loc);
27 END IF;
28 dbms_sql.close_cursor(sel_cursor_id);
29 ELSE
30 image_len := 0;
31 END IF;
32 exception when others then
33 if dbms_sql.is_open(sel_cursor_id) then
34 dbms_sql.close_cursor(sel_cursor_id);
35 end if;
36 END hd6_read_image;
37 /
警告:已创建的过程出现编译错误。
SQL>; SHOW ERRORS
PROCEDURE HD6_READ_IMAGE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
24/4 PL/SQL: Statement ignored
24/36 PLS-00302: 必须说明'LOB_READONLY'组件
26/4 PL/SQL: Statement ignored
26/13 PLS-00302: 必须说明'CLOSE'组件
SQL>;
SQL>; spool off |
|