【问题标题】:Create temporary tables in Oracle stored procedure to show in Crystal Reports在 Oracle 存储过程中创建临时表以显示在 Crystal Reports 中
【发布时间】:2015-09-02 21:40:35
【问题描述】:

在 SQL Server 中,我可以创建存储过程来创建一个临时表,将值插入其中,然后从该临时表返回一个选择作为复合 Crystal Report 的结果集。

我不知道如何在 Oracle 存储过程中执行它。

我知道我可以创建一个字符串变量然后立即执行。但是我不知道如何插入值,结果集将是水晶报表源。

【问题讨论】:

  • 我认为您正在寻找Global temporary tableGTT 是特定于会话的,您可以在 PL/SQL 程序中使用它。但是,动态创建对象并不是一个好主意。您应该创建一次表,然后根据您的业务需要使用它。如果您正在寻找不同的东西,请详细说明您的要求。
  • 您不会像在 SQL Server 中那样在 Oracle 中创建临时表。你使用光标。

标签: oracle plsql crystal-reports global-temp-tables


【解决方案1】:

您可以使用如下的plsql程序尝试一下。

CREATE PROCEDURE testRS (lcout OUT sys_refcursor) AS
  BEGIN
    OPEN lcout 
    FOR 
    SELECT object_name, object_type 
    FROM user_objects;
  END testRS;

sys_refcursor 是一个弱游标,这意味着它可以指向任何查询,并且没有强制类型。

要在sqlplus下执行(水晶报表下应该有类似的API),你需要定义一个sqlplus变量,它保存过程中游标的结果集。

-- Define sqlplus variable
SQL> var ncc refcursor;

-- Call to procedure.
SQL> exec TESTPKG.testRS( :ncc );

PL/SQL procedure successfully completed.

-- Display the resultset.
SQL> print :ncc;

希望对你有帮助,

迪曼特

【讨论】:

  • 谢谢,但我的问题是关于在存储过程中创建一个临时表并将其作为结果集返回并作为 Crystal Report 数据源引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多