powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в ASP получить RETURN x из хранимки MS SQL
2 сообщений из 2, страница 1 из 1
Как в ASP получить RETURN x из хранимки MS SQL
    #33506044
День добрый!

В коде ASP-страницы надо получить значение, возвращаемое через RETURN из хранимой процедуры. Как это сделать. Для набора данных используем метод EXECUTE, а тут непонятно :(
...
Рейтинг: 0 / 0
Как в ASP получить RETURN x из хранимки MS SQL
    #33506245
Возвращаемое значение хранимой процедуры - это фактически еще один тип выходного параметра.

Допустип есть хранимая процедура.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE Procedure procTest
	@custid INT
As
	IF (SELECT Count(*) FROM tblCustomers 
	     WHERE CustomerId = @custid) >=  1 
		RETURN  0 
	ELSE
		RETURN  1 

Страница будет выглядить следующим образом.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
<%@ LANGUAGE="VBScript" %>
<% Option Explicit %>
<HTML>
<HEAD>
    <TITLE>Test.asp</TITLE>
</HEAD>
<BODY>
    <H1>Test</H1>
    <%
    Const adCmdStoredProc =  4 

    Dim cnn
    Dim cmd
    Dim strCnnString
    Dim lngCustId

    Set cnn = Server.CreateObject("ADODB.Connection")
    Set cmd = Server.CreateObject("ADODB.Command")

    strCnnString = "Provider=SQLOLEDB;" _
      & "Data Source=(local);Database=TestDb;" _
      & "User Id=sa;Password=abc;"

    lngCustId =  4 

    cnn.Open strCnnString

    Set cmd.ActiveConnection = cnn
    cmd.CommandText = "procTest"
    cmd.CommandType = adCmdStoredProc

    cmd.Parameters.Refresh
    cmd.Parameters("@custid") = lngCustId

    cmd.Execute
	 
    Response.Write "Return value " _
      & cmd.Parameters("@return_value")
    %>  
    <br>
    <%
    If cmd.Parameters("@return_value") =  0  Then
        Response.Write "Customer #" _
	      & lngCustId & " exists."
    Else
        Response.Write "Customer #" _
	     & lngCustId & " does not exists."
    End If

    Set cmd = Nothing
    cnn.Close
    Set cnn = Nothing
    %>
</BODY>
</HTML>

И еще, при использовании метода Refresh происходит лишние обращение к серверу. Чтобы его избежать, можно воспользоваться методом Append. Еще надо учесть, что в коллекции Parameters объекта Command возвращаемое значение должно стоять первым, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Set prm = cmd.CreateParameter("Return", _
      adInteger, adParamReturnValue)
    cmd.Parameters.Append prm
    
    Set prm = cmd.CreateParameter("CustomerId", _
      adInteger, adParamInput, , lngCustId)
    cmd.Parameters.Append prm
    
    cmd.Execute

Успехов!
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в ASP получить RETURN x из хранимки MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]