您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



sos!sos!sos!    高手请进  sql server 存储过程返回结果集


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


sos!sos!sos! 高手请进 sql server 存储过程返回结果集[无满意答案结贴,结贴人:yongchen]
发表于:2007-11-25 13:43:18 楼主
写了一个存储过程,先用select   into语名将多个数据表连接查询后生成一个局部临时表#abcd   ,然后再用select   语句对临时表进行分组统计,想将分组统计的多行记录结果用ado的方式返回到vb中,并在卓面表格中显示出来,  
  存储过程在sql   server查询分析器中执行通过且正确。在vb中调用时出现提示:
过程proc_energy01'需要参数   '@outparam',由于本人是初次使用存储过程,所以不知道怎么做,请各位高手指教,存储过程该如何写才行,谢谢!存储过程及vb调用程序如下:
存储过程程序:(用vb创建的存储过程)
create     procedure   proc_energy01(@inparam   char(6))
as
          select   q.油田id,q.油田名称,r.区块id,s.井号,年月,日产液,日产油,含水   into   #abcd  
                from   油田名称表   q,油田区块名称表   r,井号名称表   s,产能原始表   t
                where   q.油田id=r.油田id   and   r.区块id=s.区块id   and   s.井号=t.井号   and   t.年月=@inparam    
                order   by   q.油田id
          select   油田名称,count   (*)   as   井数,sum(日产液)   日产液,sum(日产油)   as   日产油  
                  from   #abcd                      
                group   by   油田名称    

vb调用程序
dim   conn   as   new   adodb.connection
        dim   cmd   as   new   adodb.command
        dim   parainput   as   adodb.parameter
        dim   rst   as   adodb.recordset
        set   conn   =   new   adodb.connection        
        set   parainput   =   new   adodb.parameter
        set   cmd   =   new   adodb.command
        with   parainput
                .type   =   advarchar             '参数类型
                .size   =   6                           '参数长度
                .direction   =   adparaminput           '参数方向,输入或输出
                .value   ='200707'
        end   with
        cmd.parameters.append   parainput               '加入参数
        conn.cursorlocation   =   aduseclient               '使用由本地游标库提供的客户端游标
        conn.open   connectionstring
        set   cmd.activeconnection   =   conn
        with   cmd
                .commandtype   =   adcmdstoredproc
                .commandtext   =   "proc_energy01"                                                 '存储过程名
                .commandtimeout   =   15
                .EXECute                                                                                                               '运行存储过程
                set   rst   =   .EXECute                                                                                   '如果有记录集返回的写法
        end   with
发表于:2007-11-25 15:54:521楼 得分:0
你可以使用   adodb.command   来调用存储过程,如:  

dim   adocomm   as   object  
'//   创建一个对象,我们用来调用存储过程  
set   adocomm   =   createobject("adodb.command")  
with   adocomm  
'//   设置连接,假设   adoconn   为已经连接的   adodb.connection   对象  
.activeconnection   =   adoconn  
'//   类型为存储过程,adcmdstoredproc   =   4  
.commandtype   =   4  
'//   存储过程名称  
.commandtext   =   "你的存储过程名称"  
'//   设置输入参数  
.parameters.item("@输入参数").value   =   "值"  
'//   执行存储过程  
.EXECute  

if   .parameters.item("@返回参数名称").value   =   true   then  

else  

end   if  
end   with  
'//   释放对象  
set   adocomm   =   nothing
发表于:2007-11-25 16:20:342楼 得分:0
能说具体一点吗?就上面的问题,怎么做才能正确解决,我上面用的就是adodb.command   呀,老大,你看看上面的程序再说吧



快速检索

最新资讯
热门点击