복붙노트

[SQL] 클래식 ASP에서 저장 프로 시저를 사용하여 .. 실행하고 결과를 얻을 수

SQL

클래식 ASP에서 저장 프로 시저를 사용하여 .. 실행하고 결과를 얻을 수

나는 하루 종일이 문제를 해결하기 위해 시도했지만 나를 위해 작동하지 않습니다. 나는 명령을 실행하고 레코드에 결과 등을 좀하고 싶습니다.

문제는 두 가지 중 하나입니다 : 나는 빈 반응을 얻고있다 또는 내 코드에 문제가 중. 나는이 명령은 DB에서 몇 줄을 가져 오는 것을 확실히 알고있다. 나는 루프 내에서 Response.Write를 추가,하지만 그들은 인쇄되지 않습니다.

여기에 코드입니다 :

Set conn = Server.CreateObject("ADODB.Connection")
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;"


Set objCommandSec = CreateObject("ADODB.Command")
With objCommandSec
 Set .ActiveConnection = Conn
 .CommandType = 4
 .CommandText = "usp_Targets_DataEntry_Display"
 .Parameters.Append .CreateParameter("@userinumber ", 200, 1, 10, inumber)
 .Parameters.Append .CreateParameter("@group ", 200, 1, 50, "ISM")
 .Parameters.Append .CreateParameter("@groupvalue", 200, 1, 50, ismID)
 .Parameters.Append .CreateParameter("@targettypeparam ", 200, 1, 50, targetType)

End With 

set rs = Server.CreateObject("ADODB.RecordSet") 
rs = objCommandSec.Execute


while not rs.eof
    response.write (1)
    response.write (rs("1_Q1"))
    rs.MoveNext
wend
response.write (2)

EDITED @Joel Coehoorn 응답 다음 코드를 수정 한 후, 솔루션입니다 :

    set rs = Server.CreateObject("ADODB.RecordSet") 
    rs.oppen objCommandSec

대신에

set rs = Server.CreateObject("ADODB.RecordSet") 
rs = objCommandSec.Execute

해결법

  1. ==============================

    1.몇 분 동안이 바라보며, 나는 기존의 ASP와 함께 작업 한 이후 그것은 오랜 시간이되었습니다,하지만 난 보는 세 가지를 참조했다 :

    몇 분 동안이 바라보며, 나는 기존의 ASP와 함께 작업 한 이후 그것은 오랜 시간이되었습니다,하지만 난 보는 세 가지를 참조했다 :

  2. ==============================

    2.팁 몇 년 동안 ASP 고전 작업을 한 후

    팁 몇 년 동안 ASP 고전 작업을 한 후

  3. ==============================

    3.이 대답 할 수도 있지만 OPS는 솔루션을 찾고 다른 사람에게 도움이 될 수도, 직접 질문.

    이 대답 할 수도 있지만 OPS는 솔루션을 찾고 다른 사람에게 도움이 될 수도, 직접 질문.

    최근에 나는 실행중인 ASP 고전적인 코드에 뭔가를 (내가 나이에 쓸 가지고있는) 수정 내게 필요한 유지 보수 작업을했다. 영업 이익은처럼 프로 시저 호출은 같은 방식으로 작성되었습니다 내가 과거에 그것을 어떻게 그게 아니었다.

    여기에 내가 과거에 사용하는 구문은 다음과 나는 여기에서 제공하는 다른 솔루션보다 조금 더 깨끗 생각합니다.

    , 출력 파라미터를 읽고 저장 프로 시저에 매개 변수를 전달 매개로 NULL 값을 전달하는 방법을 다음 코드 프로그램은 레코드에 대하여 반복 기록 횟수를 읽고.

    dim conn, cmd, rs
    
    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Driver={SQL Server};Server=servername;Uid=username;Pwd=password;Database=dbname;"
    
    set cmd = Server.CreateObject("ADODB.Command")
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "procedurename"
    cmd.Parameters.Refresh
    cmd.Parameters("@nullparam") = null
    cmd.Parameters("@strparam") = "1"
    cmd.Parameters("@numparam") = 100
    
    set rs = Server.CreateObject ("ADODB.RecordSet")
    rs.CursorLocation = adUseClient ' to read recordcount'
    
    rs.open cmd, , adOpenStatic, adLockReadOnly
    
    Response.Write "Return Value: " & cmd.Parameters("@RETURN_VALUE") & "<br />"
    Response.Write "Record count: " & rs.RecordCount & "<br />"
    while not rs.EOF 
        ' or do whatever you like with data'
        Response.Write rs("colname") & "<br>"
        rs.MoveNext
    wend
    
  4. from https://stackoverflow.com/questions/21915874/using-stored-procedure-in-classical-asp-execute-and-get-results by cc-by-sa and MIT license