asp開發(fā)bs架構(gòu)的三層系統(tǒng),對于中小結(jié)構(gòu)的系統(tǒng)把業(yè)務(wù)邏輯放在sqlserver的存儲過程里面是一個很好的實現(xiàn)方法,但這么做出現(xiàn)了一個asp客戶端和數(shù)據(jù)庫存儲過程之間配合調(diào)試的不方便.
實際開發(fā)中我寫了下面一個函數(shù),自動把asp端傳給數(shù)據(jù)庫的參數(shù)取出,自動生成符合sqlserver查詢分析器的規(guī)則的存儲過程執(zhí)行命令串,放在textarea控件里,可以從頁面直接復(fù)制到查詢分析器里進行存儲過程調(diào)試,下面就是程序. ‘==================================================================’ dim dsn ‘數(shù)據(jù)源 dim storename ‘存儲過程名 dim con ‘Connection對象 dim cmd ‘Command對象 dim rs ‘Recordset 對象 set con=server.createobject(“ADODB.Connection”) con.open dsn set cmd=server.createobject("ADODB.Command") set cmd.ActiveConnection=Con cmd.CommandText= storename cmd.Commandtype=adCmdStoredProc cmd.Parameters.Append cmd.CreateParameter("@State",adInteger,adParamInput,4) cmd.Parameters.Append cmd.CreateParameter("@WhereT",adVarChar,adParamInput,200) cmd.Parameters.Append cmd.CreateParameter("@BranchType",adVarChar,adParamInput,50) cmd("@State") = 1 cmd("@WhereT")=”2” cmd("@BranchType")=”3” getpmt(cmd) ‘獲取存儲過程的參數(shù) set rs=server.CreateObject("adodb.recordset") rs.CursorType =3 rs.LockType =3 rs.CursorLocation =3 set rs.Source =cmd rs.Open ‘======================================================’ ‘ 形成存儲過程的函數(shù) ‘=======================’ ‘ 輸入?yún)?shù) a= command對象 ‘=======================’ sub getpmt(a) b=a.CommandText b=replace(b,"?","") b=replace(b,",","") b=replace(b,"}","") b=replace(b,"{","") b=replace(b," ","") b=replace(b,"call","") b=replace(b,"(","") b=replace(b,")","") Response.Write "<center><table border=1 cellpadding =0 cellspacing =0 bordercolordark=#ffffff bordercolorlight=#cccc88><tr onclick="&b&".style.display=''><td bgcolor=#cccc88>" & b & "</td></tr><tr id="&b&" style=display:none><td>" Response.Write "<TEXTAREA rows=6 cols=70 style='font-color:#ccc888;bgcolor:#ffffc'>" Response.Write b for each element in a.parameters c=element c="'" & replace(c,"'","''") & "'" d=d & vbcrlf & element.name &"="& c &"," next d=left(d,len(d)-1) Response.Write d Response.Write "</TEXTAREA></td></tr></center>" end sub
|