2011-01-19 70 views
0

我当前有能力执行sql语句,返回信息并使用reader来解析信息。我想用SPROC来做到这一点,但是,我有问题。在定义sproc时,我应该如何返回表的结构?返回每一列?Oracle存储过程将表结构返回给PowerShell

例如:

CREATE PROCEDURE sp_test1 (id int, 
          test1 varchar2(15), 
          test3 varchar3(15)) 
BEGIN 
    SELECT id, test1, test3 FROM test_table 
END; 

回答

3

如果你想使用存储过程,你通常会返回一个指针,即

CREATE OR REPLACE PROCEDURE sp_test1(p_cursor OUT SYS_REFCURSOR) 
AS 
BEGIN 
    OPEN p_cursor 
    FOR SELECT id, test1, test3 
     FROM test_table; 
END; 

假设的PowerShell知道用光标句柄是做什么的返回,这应该工作。另一方面,如果你只是在封装一个查询,你可能想在Oracle中使用一个视图而不是存储过程。然后您的应用程序可以针对视图发出简单的选择。