【发布时间】:2013-10-23 05:33:11
【问题描述】:
如何从 SAS 调用 Oracle 存储过程来传递值和返回值。我有 SAS/ACCESS 并运行 SAS 9.3
谢谢 丹
【问题讨论】:
-
看看 SQL 直通工具吧?
标签: sas
如何从 SAS 调用 Oracle 存储过程来传递值和返回值。我有 SAS/ACCESS 并运行 SAS 9.3
谢谢 丹
【问题讨论】:
标签: sas
这应该可行:
proc sql;
connect to oracle (user="oracleUserName" password="pass" path="serverPath" CONNECTION=GLOBAL CONNECTION_GROUP = SASAML);
execute( execute MyPackage.MyProcedure(¶m1, ¶m2) ) by oracle;
/* param1 and param2 are macro variables here */
disconnect from oracle;
quit;
【讨论】:
这在 SAS 9.2 及更高版本中使用 ODBC 直通应该可以正常工作。
以下是相关链接的类似讨论:
http://communities.sas.com/message/114296#114296
我会尝试并在某个时候回来推测此答案中的链接文章...
【讨论】:
传递存储过程执行不支持输出参数。但如果您只需要一个输出参数,解决方法是使用函数和“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;
【讨论】: