create or replace procedure p1(a int,b varchar2) is
begin
insert into tb values(a,b);
commit;
end p1;
/SQL817> create table tb (a int,b clob);表已创建。SQL817> create or replace procedure p1(a int,b varchar2) is
2 begin
3 insert into tb values(a,b);
4 commit;
5 end p1;
6 /过程已创建。
SQL817> begin
2 p1(1,'abc');
3 p1(2,'123');
4 end;
5 /PL/SQL 过程已成功完成。SQL817> select * from tb; A
----------
B
--------------------------------
1
abc 2
123
begin
insert into tb values(a,b);
commit;
end p1;
/SQL817> create table tb (a int,b clob);表已创建。SQL817> create or replace procedure p1(a int,b varchar2) is
2 begin
3 insert into tb values(a,b);
4 commit;
5 end p1;
6 /过程已创建。
SQL817> begin
2 p1(1,'abc');
3 p1(2,'123');
4 end;
5 /PL/SQL 过程已成功完成。SQL817> select * from tb; A
----------
B
--------------------------------
1
abc 2
123
类型不大匹配吧?
BLOB:大二进制对象
CLOB:大文本对象
2 p1(1,'abc');
3 p1(2,'bcd');
4 end;
5 /PL/SQL 过程已成功完成。SQL817> 不是可以的吗
CREATE TABLE ZDS.VIEW_SITES_INFO
(
SITE_ID NUMBER(3,0) NOT NULL,
AUDIO BLOB DEFAULT empty_blob()
)
/
存储过程定义如下CREATE OR REPLACE PROCEDURE
/***************************************************************************************************
*
* 过程名
*
* ZDS.BLOBINSERT
*
* 概要说明
*
* 插入二进制大型对象。
*
* 参数
* <IN>
* aviID 编号
* aviBLOB 二进制数据
* <OUT>
*
* 涉及表
*
* view_sites_info : U blob测试表
*
***************************************************************************************************/
BLOBINSERT(aviID in view_sites_info.site_id%type,
aviBLOB in RAW)
AS
blob_loc BLOB;
tot_len INTEGER;
numof INTEGER;BEGIN INSERT INTO view_sites_info VALUES(aviID,EMPTY_BLOB()); SELECT AUDIO INTO blob_loc -- 获取定位器并锁定行
FROM view_sites_info
WHERE site_id = aviID FOR UPDATE; numof:=utl_raw.length(aviBLOB); dbms_lob.write(blob_loc,numof,1,aviBLOB);
tot_len :=DBMS_LOB.GETLENGTH(blob_loc);
DBMS_OUTPUT.PUT_LINE('The length of the BLOB after population is:'||TO_CHAR(tot_len));
DBMS_OUTPUT.PUT_LINE('The length of the RAW is:'||TO_CHAR(numof)); COMMIT;
END;