winform上传下载相关存储过程

-- 定义了相关的包体,包的声明也不用我多说了。。
create or replace package body dt_books_info is
-- 将列表里的相关数据放入datagridview里的存储过程
function get_info(para_booksinfo out cur_type) return varchar2 is
  excute_result varchar2(200);
  
  begin
    excute_result := 'succeed';
    open para_booksinfo for 
       select dt.book_no, dt.book_name, dt.book_type, dt.up_time
         from dt_books dt;
           return excute_result;
    close para_booksinfo;
    
    exception
      when no_data_found then
        excute_result := sqlerrm;
        return excute_result;
   end get_info;


-- 插入数据到数据库中这个存储过程我写了很久,也看了网上的很多资料,大多都是介绍用lob包写
-- 跟我实验室要求的方法不一样,没办法,捣鼓了半天也写出来了,这里也有和同学讨论的成果
-- 主要的思路:
-- 在数据库的相关列(你存储lob数据的那一列)插入一个empty_blob(),之后利用select into...返回该列的
-- “引用”(数据库中我也不知道怎么称呼,那我就借用了c++的称呼),在前台的程序中将该blob赋给一个
-- OracleBlob类型的变量,之后往这个里面写入数据即可  
procedure insert_data(
                     para_bookname     in dt_books.book_name%type,
                     para_booktype     in dt_books.book_type%type,
                     para_uptime       in dt_books.up_time%type,
                     temp_blob out dt_books.book_content%type                   
                     ) is  
      record_no integer;
      begin            
          insert into 
          dt_books
          (book_no,
           book_name,
           book_type, 
           up_time,         
           book_content
           )
           values
           (
            add_bookno.nextval,
            para_bookname,
            para_booktype,
            para_uptime,
            empty_blob()
            );
            select add_bookno.currval into record_no
            from dual;
            select book_content into temp_blob
              from dt_books
                where book_no = record_no
                  for update;
      end insert_data;     


-- 用于下载数据的blob,将blob返回,之后再将blob数据写入相关文件,这个和上传基本就是一个相反的过程
function get_blob(
                  para_bookno in varchar2
                 )  return blob is
     temp_blob blob;
    
     begin
       select book_content into temp_blob
       from dt_books
       where para_bookno = dt_books.book_no 
       for update;
       return temp_blob;
     exception
       when no_data_found then
         return null;
     end get_blob;


-- 写的是delete blob,其实也就是删除数据库相关的一行数据
function delete_blob(
                     para_bookno in varchar2
                     ) return varchar2 is 
     excute_result varchar2(200);
     
     begin 
       excute_result := 'succeed';
       delete from dt_books
         where dt_books.book_no = para_bookno;
       return excute_result;
     exception 
       when others then
         excute_result := sqlerrm;
          return excute_result;
     end;
  
end dt_books_info;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值