调用不带参数的预言机存储过程 ADODB



我还没有找到有关如何从Excel中使用ADODB调用Oracle存储过程的任何地方,其中存储过程没有输入参数。

说明缺少输入参数的假示例:

CREATE OR REPLACE PROCEDURE Get_Data
(OUTPUT OUT SYS_REFCURSOR) IS
******************************************************************************/
BEGIN
OPEN OUTPUT FOR 
SELECT DISTINCT
B.ITEM_ID
B.ITEM_DESC
FROM ITEM_FILE B
WHERE ITEM_ID IS NOT NULL
ORDER BY B.ITEM_ID
; 
END Get_Data;
/

哦,存储过程是必需的,因为我们不想授予用户 SQL 访问权限来创建他们想要的任何 SQL。

这可能吗?如果是这样,调用它需要什么样的代码?

谢谢 担

将过程转换为函数:

CREATE OR REPLACE FUNCTION Get_Data RETURN SYS_REFCURSOR IS
res SYS_REFCURSOR;
BEGIN
OPEN OUTPUT FOR 
SELECT DISTINCT
B.ITEM_ID
B.ITEM_DESC
FROM ITEM_FILE B
WHERE ITEM_ID IS NOT NULL
ORDER BY B.ITEM_ID;  
RETURN res;
END Get_Data;
/

在 VBA 中的调用将是这样的:

cmd.CommandText = "{CALL Get_Data()}"
cmd.Properties("PLSQLRSet") = True
Set Rst1 = cmd.Execute 
cmd.Properties("PLSQLRSet") = False

请注意,默认情况下,OUT 参数的使用方式如下:

cmd.Parameters.Append cmd.CreateParameter("OUTPUT", adVarChar, adParamOutput, 100)

但是,对于 RefCursor 参数,不得使用cmd.Parameters.Append声明它们。

请查看 OLE DB 提供程序开发人员指南,其中包含几个示例。存储过程和函数一章 返回行集应该是与您最相关的。

最新更新