1、存储过程:
create or replace procedure InsertBlob(TableName in varchar2, FieldList in varchar2,
DataList in varchar2,BlobFieldName in varchar2,BlobFieldData in blob) is
v_SqlString varchar2(1000);
begin
v_SqlString:='insert into '|| TableName || '('|| FieldList ||','|| BlobFieldName ||')values('
|| DataList ||',:BlobFieldData)';
dbms_output.put_line(v_SqlString);
execute immediate v_SqlString using BlobFieldData;
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('sqlcode=' ||SQLCODE);
DBMS_OUTPUT.PUT_LINE('message=' || SQLERRM);
end InsertBlob;
2.调用方法(我在项目中用到的,插入图片,blob类型,clob处理类似)
private void AddIcon(string strTemp)
{
//插图标到设备类型图标库
try
{
System.IO.FileStream fs = new System.IO.FileStream(@strImageName, FileMode.Open,FileAccess.Read);
//创建一个数组用于存放图片字节流
byte[] adImageData = new byte[fs.Length];
參考例子:
DECLARE
v_CLOBlocator CLOB;
v_BLOBlocator BLOB;
BEGIN
-- Initializes the clob_col to the specified string, and returns the
-- locator into v_LOBlocator.
INSERT INTO lobdemo (key, clob_col)
VALUES (20, 'abcdefghijklmnopqrstuvwxyz')
RETURNING clob_col INTO v_CLOBlocator;
-- Modifies blob_col for the same row.
UPDATE lobdemo
SET blob_col = HEXTORAW('00FF00FF00FF')
WHERE key = 20;
-- Retrieves the locator for the newly updated value, not the value
-- itself.
SELECT blob_col
INTO v_BLOBlocator
FROM lobdemo
WHERE key = 20;
END;
/