2009-10-13 6 views
0

미리 이름, 형식 또는 인수 수를 모른 채 VBscript 매개 변수화 된 쿼리를 작성할 수 있습니까?VBScript에서 매개 변수화 된 쿼리 작성

나는이 작업을 수행하기 위해 노력하고있어 :

set cmd = Server.CreateObject("ADODB.Command")  
cmd.ActiveConnection = cn  

cmd.commandText = proc  
cmd.commandType = 4  

cmd.Parameters.Refresh 
For i = 0 To UBound(params)   
    cmd.Parameters(i).Value = params(i) 
Next  

set rs = cmd.Execute 

이 나에게 오류를 제공합니다

ADODB.Parameter error '800a0d5d' 
Application uses a value of the wrong type for the current operation 

내가 구문 분석하는 데 노력하고있어 인수 문자열의 형식은 'ARG1'이다, 'arg2'등. Params에는 args 배열 만 포함됩니다. 저장된 proc은 인자 타입과 이름이 다른 여러 타입 중 하나가 될 수 있습니다. 필자는 질의를 매개 변수화하여 입력이 소독되었는지 확인해야합니다. 어떤 아이디어?

답변

0

이 문제는 정말 고통 스럽습니다. 일부 데이터베이스 추상화를 구축하는 동안 문제가 발생했습니다. 알 수없는 타입의 매개 변수를 실행하기 전에 Command 객체에 바인딩 할 수는 없지만, 은 실행할 때 알려지지 않은 유형의 args 배열을 전송할 수 있습니다. 따라서 :

dim cmd: set cmd = Server.createObject("adodb.command") 
cmd.commandText = "select * from Foo where Bar = ?" 
set cmd.activeConnection = … 

dim rs: set rs = cmd.execute(, Array(42)) 

당신이 명령에 알 수없는 형식의 인수를 결합 할 경우 내부적으로이 방법을 사용하여 자신의 명령 클래스를 작성해야합니다. 나는 자신의 데이터베이스 추상화 클래스를 작성하여 쿼리 구문이 다음과 같았습니다.

관련 문제