调用不带参数的oracle存储过程ADODB
Calling an oracle stored procedure with no parameters ADODB
我还没有找到关于如何使用 ADODB 从 Excel 调用 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
声明它们。
看看 Provider for OLE DB Developer's Guide, it contains several examples. Chapter Stored Procedures and Functions Returning Rowsets 应该是最适合你的。
我还没有找到关于如何使用 ADODB 从 Excel 调用 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
声明它们。
看看 Provider for OLE DB Developer's Guide, it contains several examples. Chapter Stored Procedures and Functions Returning Rowsets 应该是最适合你的。