2015-08-13 5 views
1

Я работаю с классическим asp и использую хранимую процедуру. Я должен получить параметр параметра хранимой процедуры. Это мой кодполучить значение параметра хранимой процедуры в классическом asp

<% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %> 
<!-- METADATA TYPE="TypeLib" NAME="Microsoft ADO Type Library" UUID="{00000205-0000-0010-8000-00AA006D2EA4}" --> 
<% 

Dim value 
    Dim i 

set con = Server.CreateObject("ADODB.Connection") 
con.Open "Provider=SQLOLEDB;Server=aliba\SQLEXPRESS;Database=dummySP;Trusted_Connection=Yes;"  
Set Comm = Server.CreateObject("ADODB.Command") 
comm.ActiveConnection = con 
comm.CommandText = "sp_dummy" 
'comm.NamedParameters=true 
comm.CommandType = adCmdStoredProc 
comm.Parameters.Append comm.CreateParameter("@weight" , adVarchar,adParamInput, 50, "hello") 
'comm.Parameters.Append comm.CreateParameter("PRODUCT", adVarchar, adParamInput,50, producttype) 
'comm.Parameters.Append comm.CreateParameter("ACCOUNT", adVarchar, adParamInput,100, "") 


    comm.Parameters.Append comm.CreateParameter("@pris", adVarchar, adParamOutput,50) 'output parameters 
    'i=comm.Execute 
    comm.Execute 
    value=comm.Parameters("@pris").Value 
    Response.Write("Value is") 
    Response.Write(value) 

Значение pris не отображается на выходе. Я понятия не имею, что с этим не так.

Я следовал этой ссылке (Calling SQL Stored Procedure with Output Parameter in VBScript), но не получает успех

Это дает мне следующее сообщение об ошибке

Значение

Response Ошибка объекта 'ASP 0185: 8002000e'

Отсутствует имущество по умолчанию

/StoreProcedure.asp , строка 0

Свойство по умолчанию для объекта не найдено.

Вот моя хранимая процедура

ALTER procedure [dbo].[sp_dummy] 
    @weight nvarchar(50), 
    @pris nvarchar(50)= null out 
    as 
    begin 

    select @pris = pris from sp_dummy_table where weight= @weight 
    end 
+1

Вы не можете получить значение параметра adParamOutput, пока 'ADODB.Command' не выполнит метод' Execute() '. Выполнение *() должно выполняться для получения результата из хранимой процедуры и заполнения этого параметра. Ошибка, я думаю, потому, что ваша строка 'value =' неверна, переместите ее под 'comm.execute' и попробуйте' value = comm.Parameters («Pris»). Value'. Также запомните «.Append» все параметры в том порядке, в котором ожидает хранимая процедура, или у вас возникнут проблемы. – Lankymart

+0

@ Lankymart Я просто сделал то, что вы сказали, но все же дал мне ту же ошибку. –

+0

Мне нужно добавить что-то еще, просто отредактируйте код –

ответ

0

Я предлагаю вам закрыть ваш SP с SELECT, так что вы можете получить значение, как из Recordset.

SELECT [email protected] 

Затем в коде ASP:

Set rsComm = comm.Execute 
If Not rsComm.EOF Then 
    myPRIS = rsComm.Fields("OutPRIS").Value 
Else 
    myPRIS = Null 
End If 
rsComm.Close 
Set rsComm = Nothing 

Надеется, что это помогает.

+0

. Тогда в чем смысл использования выходного параметра, просто заменив один метод другим. – Lankymart

+0

Я предложил предложение своего предпочтительного и хорошо известного метода. Он удовлетворяет цели возврата ценности. Я не уверен, что согласен с тем, что предлагать альтернативу на самом деле «вниз-голосовать» достойно. – CLaFarge

+0

Его не «хорошо известно» на самом деле менее эффективно, чем просто возврат выходной переменной. Нет ничего плохого в том, что подход OP просто должен убедиться, что он выполнен правильно. – Lankymart

 Смежные вопросы

  • Нет связанных вопросов^_^