在 winform 应用程序中使用 PLSQL dbms_output.put_line 输出

Posted

技术标签:

【中文标题】在 winform 应用程序中使用 PLSQL dbms_output.put_line 输出【英文标题】:using PLSQL dbms_output.put_line output in a winform app 【发布时间】:2014-06-08 12:03:51 【问题描述】:

我在 PLSQL 中有一个过程:

CREATE OR REPLACE PROCEDURE printAllPeople (payment INTEGER)
IS
  sum_ number(6) := payment;
  name_ varchar(10);
  CURSOR listOfPeople IS
  select lastname
  from driver join
  (select driver.id as tempdid, sum(payment) as isum
  from report join driver
  on report.driverid = driver.id
  group by driver.id
  having  sum(payment) > sum_)
  on driver.id = tempdid;
BEGIN
  IF NOT listOfPeople%ISOPEN THEN
 OPEN listOfPeople;
  END IF;
  LOOP
 FETCH listOfPeople INTO name_;
 EXIT WHEN listOfPeople%NOTFOUND;
     dbms_output.put_line(name_);
 END LOOP;
END;

我有一个从 Oracle DB 检索数据的 winform 应用程序。 是否有任何选项可以以某种方式使用“dbms_output.put_line”在我的 winform 应用程序上显示输出?

【问题讨论】:

简短的回答是否定的。取而代之的是,您可以向您的过程添加参数。 我还没有尝试过,但看起来您应该能够从您的应用程序中调用 DBMS_OUTPUT.GET_LINE 来检索您的 PL/SQL 代码写入 DBMS_OUTPUT 的文本。 Docs here。分享和享受。 【参考方案1】:

想象一下像这样简单地调用一个函数:

CREATE OR REPLACE
FUNCTION get_dbms_output(maxbytes IN NUMBER, buffer OUT VARCHAR2) RETURN NUMBER
IS
    l_line VARCHAR2(255);
    l_done NUMBER := 0;
BEGIN
    LOOP
        EXIT WHEN LENGTH(buffer) + 255 > maxbytes OR l_done = 1;
        dbms_output.get_line(l_line, l_done);
        buffer := buffer || l_line || CHR(10);
    END LOOP;
    RETURN l_done;
END get_dbms_output;
/

【讨论】:

以上是关于在 winform 应用程序中使用 PLSQL dbms_output.put_line 输出的主要内容,如果未能解决你的问题,请参考以下文章

使用PLSQL Developer 连接远程oracle实例

使用PLSQL Developer 连接远程oracle实例

使用PLSQL Developer 连接远程oracle实例

C#winform远程连接sql数据库

使用PLSQL工具连接远程Oracle

plsql 不能初始化