从SAS调用Oracle存储过程

时间:2012-02-13 00:02:22

标签: sas

如何从SAS调用Oracle存储过程来传递值并返回值。我有SAS / ACCESS并运行SAS 9.3

由于 丹

3 个答案:

答案 0 :(得分:2)

这应该有效:

proc sql;

connect to oracle (user="oracleUserName" password="pass" path="serverPath" CONNECTION=GLOBAL CONNECTION_GROUP = SASAML);

execute( execute MyPackage.MyProcedure(&param1, &param2) ) by oracle;

/* param1 and param2 are macro variables here */

disconnect from oracle;

quit;

答案 1 :(得分:1)

使用ODBC passthrough在SAS 9.2及更高版本中应该可以正常工作。

以下是与相关链接的类似讨论:

http://communities.sas.com/message/114296#114296

我会试着回过头来猜测这个答案中的链接文章......

答案 2 :(得分:0)

传递存储过程执行不支持输出参数。但是,如果只需要一个输出参数,则解决方法是使用函数和“SELECT FROM dual”查询。这是示例(它使用一个从宏变量传入的输入参数)。

%let a =  'ddd'; 
proc sql;
    connect to oracle as ora2 (user=xxx password=xxx path="xxx");
    select * from connection to ora2 (
    SELECT test_fun(p_a => &a.) FROM dual
    );
    disconnect from ora2;
run;