zoukankan      html  css  js  c++  java
  • delphi调用oracle存储过程(ODAC)

    CREATE OR REPLACE PACKAGE p_lee01
    IS
    TYPE cur_lee01 IS REF CURSOR;
    END;

    CREATE OR REPLACE PROCEDURE pro_lee01(in_a IN NUMBER,out_01 OUT NUMBER,cur_01 OUT p_lee01.cur_lee01) IS
    BEGIN 
     out_01 := 3;
     OPEN cur_01 FOR 
          SELECT * FROM TLEE01;
     dbms_output.put_line(IN_a);

    END;


    -- Create table
    create table TLEE01
    (
      ID    NUMBER,
      FNAME VARCHAR2(10)
    )

    ----------------------------------
    ODAC  两种调用方式

    procedure TForm1.Button15Click(Sender: TObject);
    begin
      orastoredproc1.Params.clear;
      OraStoredProc1.StoredProcName := 'pro_lee01';
      orastoredproc1.PrepareSQL;
      orastoredproc1.ParamByName('in_a').Value := 5;
      orastoredproc1.prepare;
      OraStoredProc1.ExecProc;
      showmessage(OraStoredProc1.ParamByName('out_01').AsString);
      ShowValue(OraStoredProc1, Button8.Caption);
    end;


    procedure TForm1.Button9Click(Sender: TObject);
    var
      s: string;
    begin
      s := 'begin pro_lee01(:a,:b,:cur_01 ); end;';
      OraQuery1.SQL.Clear;
      OraQuery1.SQL.Add(s);
      OraQuery1.AutoCommit := false;
      OraQuery1.FetchAll := true;
      OraQuery1.ParamByName('a').value := 4;
      OraQuery1.ParamByName('b').ParamType := ptoutput;
      OraQuery1.ParamByName('b').DataType:= ftinteger;

      OraQuery1.ParamByName('cur_01').ParamType := ptoutput;
      OraQuery1.ParamByName('cur_01').DataType:= ftcursor;
      OraQuery1.Open;

      showmessage(OraQuery1.ParamByName('b').AsString);   //显示返回值
      ShowValue(OraQuery1, Button8.Caption);
    end;

  • 相关阅读:
    minikube国内在线部署体验
    分表与分库使用场景以及设计方式
    epool与select有什么区别
    使用ssh-keygen生成私钥和公钥
    mysql关键字冲突
    MySQL 获取当前时间戳
    平时常说的ThreadLocal,今天就彻底解决它
    mysql和mssql最大连接数
    Spring Boot实战:拦截器与过滤器
    Mysql 索引问题-日期索引使用
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/5332877.html
Copyright © 2011-2022 走看看