簡體   English   中英

如何在ASP中使用可選參數將參數名稱傳遞到存儲過程中

[英]How to pass a parameter name into a stored procedure with an optional param in asp

我正在使用經典的ASP應用程序以及ADODB.Recordset和SQL Server。

當我使用存儲過程時:

command.Parameters.Append command.CreateParameter name:="name", value:="value"

大小和方向

我正在使用的存儲過程具有可選參數。

因此,我僅傳遞所需的參數(在這種情況下,僅第3和第8個參數)

我收到錯誤消息,當我使用SQL Server Profiler進行查看時,可以看到參數已傳遞而沒有參數名稱(僅值)

那就是錯誤的原因

我究竟做錯了什么?

謝謝

您需要設置命令的屬性NamedParameters = True並在每個參數的名稱前添加@字符。 取自官方文件

當此屬性為true時,ADO將為Command Object傳遞Parameter集合中每個參數的Name屬性的值。 提供程序使用參數名稱來匹配CommandText或CommandStream屬性中的參數。 如果此屬性為false(默認值),則參數名稱將被忽略,並且提供程序使用參數順序將值與CommandText或CommandStream屬性中的參數進行匹配

發生此問題的原因是您構建參數的方式,無論是否執行這些參數,都必須聲明所有參數並將它們附加到參數集合中。

With command
    'Declare all the parameters required or not in the order they 
    'should be applied and append them to the Parameters Collection.
    .Parameters.Append(.CreateParameter("name1", adVarWChar, adParamInput, 50))
    .Parameters.Append(.CreateParameter("name2", adVarWChar, adParamInput, 50))
    .Parameters.Append(.CreateParameter("name3", adVarWChar, adParamInput, 50))
    .Parameters.Append(.CreateParameter("name4", adVarWChar, adParamInput, 50))

    'Only define values for parameters you wish to pass.
    'In this case only "name2" and "name4" parameters are passed.
    .Parameters("name2").Value = "My Name 2 Value"
    .Parameters("name4").Value = "My Name 4 Value"
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM