51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2473|回复: 4
打印 上一主题 下一主题

[原创] 如何在一个Action内执行多个SQL语句?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-30 17:47:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码1:将查询字段设为常量               
                        LoginUserName="吴静"
                        SupplyExportCodeName="需求09110000149"
       
                        Dim con
                        Dim conset
                        Dim rs
                        Dim sql

                        Dim con2
                        Dim conset2
                        Dim rs2
                        Dim sql2
                        If (UseCase="代管物资出库") Then


                        '//建立连接
                        Set con=createobject("adodb.connection")
                        conset="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"

                        '//打开数据源链接
                        con.open conset

                        '//建立空的记录集
                        Set rs=createobject("adodb.recordset")

                        '//设置SQL语句
                        msgbox SupplyExportCodeName
                        sql="use gzscene select SupplyExportCode from im_supplyexport where stockapplycode like'%"+SupplyExportCodeName+"%' "

                        '//打开记录集
                        rs.open sql,con,1,2
                        rs.Movefirst
                        SupplyExportCodeValue=rs("SupplyExportCode").value

                        msgbox SupplyExportCodeValue

                        End If


                        '//建立连接
                        Set con2=createobject("adodb.connection")
                        conset2="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
                        Set rs2=createobject("adodb.recordset")

                       
                        '//打开数据源链接
                        con2.open conset2

                        msgbox "LoginUserName="+LoginUserName

                        sql2="use gzscene select PWD from S_USER where UNAME like'%"+LoginUserName+"%' "
                        rs2.open sql2,con,1,2
                        rs2.Movefirst

                        LogPwd=rs2("PWD").value

                        msgbox LogPwd


代码2:将查询字段设为变量,而变量由excel提供

                        LoginUserName=bsSheet.Cells(2,3)
                        SupplyExportCodeName=bsSheet.Cells(2,2)

                        Dim con
                        Dim conset
                        Dim rs
                        Dim sql

                        Dim con2
                        Dim conset2
                        Dim rs2
                        Dim sql2
                        If (UseCase="代管物资出库") Then


                        '//建立连接
                        Set con=createobject("adodb.connection")
                        conset="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"

                        '//打开数据源链接
                        con.open conset

                        '//建立空的记录集
                        Set rs=createobject("adodb.recordset")

                        '//设置SQL语句
                        msgbox SupplyExportCodeName
                        sql="use gzscene select SupplyExportCode from im_supplyexport where stockapplycode like'%"+SupplyExportCodeName+"%' "

                        '//打开记录集
                        rs.open sql,con,1,2
                        rs.Movefirst
                        SupplyExportCodeValue=rs("SupplyExportCode").value

                        msgbox SupplyExportCodeValue

                        End If


                        '//建立连接
                        Set con2=createobject("adodb.connection")
                        conset2="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
                        Set rs2=createobject("adodb.recordset")

                       
                        '//打开数据源链接
                        con2.open conset2

                        msgbox "LoginUserName="+LoginUserName

                        sql2="use gzscene select PWD from S_USER where UNAME like'%"+LoginUserName+"%' "
                        rs2.open sql2,con,1,2
                        rs2.Movefirst

                        LogPwd=rs2("PWD").value

                        msgbox LogPwd

问题描述:如果单独执行代码1,是成功的,执行代码2时此时执行到rs2.open sql2,con,1,2的时候就会提示”参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突“,请问我将两个sql即:sql,sql2z放在同一个Action里面该如何处理?
PS:代码2中的两个LoginUserName等是放在excel里面,且存在循环

[ 本帖最后由 walker1020 于 2009-12-1 10:15 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2009-12-1 10:19:09 | 只看该作者
    建议楼主 直接 在 PL/SQL 里面执行 你说的sql,sql2,看看那两个SQL 语句是否有问题。 当然,你需要先用SQL语句把代码1和代码2实现出来。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-12-1 10:24:09 | 只看该作者
    好乱啊, 建议楼主 把连接数据库, 获取数据, 断开连接
    都写成 公共函数吧, 这样方便!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2009-12-1 12:11:12 | 只看该作者
    送楼主了,细节自己调整
    connect:连接
    sql:查询SQL
    ReturnParamArray:需要返回的字段名称
    Function SQL_select(connect,sql,ReturnParamArray)
        On Error Resume Next
        Dim ReturnValue(50,1000)
        Set cnn =CreateObject ("adodb.connection")
        cnn.open = connect
        Set res =CreateObject ("adodb.recordset")
        'sql = "select * from td.USERS"
        'sql = "EXEC BUG_Statistics_by_User 'xx','xx','xxxx'"
        res.open sql,cnn
        res.MoveFirst
        If Err Then
            'MsgBox "数据库查询错误"
            Exit Function
        End If
        Dim i,j
        Do While Not res.EOF
            For i = 0 To UBound(ReturnParamArray)
                ReturnValue(i,j) = res.fields(ReturnParamArray(i))
    '            If Err Then
    '                ReturnValue(i,j) = ""
    '                Err.Clear
    '            End If
            Next
            j = j + 1
            res.MoveNext
        Loop
        SQL_select = ReturnValue
        res.close
        Set res = Nothing
        cnn.close
        Set cnn = Nothing
    End Function
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-12-1 13:12:13 | 只看该作者
    use gzscene
    这段才是根本原因,ADO语句是不能使用use关键字的,只能将库名gzscene写到连接字符串中
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-17 22:42 , Processed in 0.069234 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表