【发布时间】:2014-07-24 13:14:26
【问题描述】:
我有一个带有签名的存储过程
PROCEDURE store_cust_response(
p_id NUMBER DEFAULT NULL,
p_camp_id NUMBER DEFAULT NULL,
p_offer_id NUMBER DEFAULT NULL
)
在 VBSCript 中创建参数时,是否必须为签名中的每个参数创建一个?如果是这样,我该如何调用它们的默认值?
Set conncmdA = CreateObject("adodb.command")
conncmdA.CommandText = "foo.store_cust_response"
conncmdA.CommandType = 4 'adCmdStoredProc
conncmdA.ActiveConnection = conntemp
conncmdA.Parameters.Append conncmdA.CreateParameter("p_id", adInteger, adParamInput, 4)
conncmdA.Parameters.Append conncmdA.CreateParameter("p_camp_id", adInteger, adParamInput, 4)
conncmdA.Parameters.Append conncmdA.CreateParameter("p_offer_id", adInteger, adParamInput, 4)
conncmdA.Parameters(0) = null
conncmdA.Parameters(1) = camp_id
conncmdA.Parameters(2) = offer_id
conncmdA.Execute
Set conncmdA = Nothing
【问题讨论】:
-
您尝试过类似
store_cust_response(p_id => 324)的方法吗?如果您像这样调用该过程,p_camp_id 和 p_offer_id 将具有它们的默认值。您也可以像store_cust_response(p_id => 324, p_offer_id => 432)一样调用,参数p_camp_id将具有其默认值。 -
@zaratustra:我需要从 VBScript 调用存储的过程,请参阅我对原始帖子的编辑。
-
您能告诉我们您是如何调用存储过程的吗?必须在您已经显示的代码上方再增加一行。
-
全部在原帖中展示,其余为样板代码。为了完整起见,我将编辑原始帖子。
-
IIRC 默认值仅适用于从 PL/SQL 调用该过程的情况。 (我的理解是,如果 PL/SQL 中过程的特定调用不提供所有参数,PL/SQL 编译器会从数据字典中获取默认值)。如果您以其他方式调用该过程,则必须提供所有参数。至于“调用他们的默认值” - 你不能。您必须提供值,即使这些值与签名中的默认值相同。我想你也可以查询数据字典。祝你好运。
标签: oracle stored-procedures vbscript