首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

啊一个过程有关问题

2013-11-13 
高手进啊。一个过程问题CREATE PROCEDURE myproc@conditions varchar(1000) ASdeclare @tsql varchar(6000)

高手进啊。一个过程问题

CREATE PROCEDURE myproc
@conditions varchar(1000)
 AS
declare @tsql varchar(6000),@njbm varchar(20),@bjbm varchar(20),@kskemu varchar(1000)
select @kskemu=isnull(@kskemu+',','') +''+kemu+','+kemu+'年名,'+kemu+'班名'+'' from(select distinct kemu from cj) t
set @kskemu='ksid,班级,学号,姓名,'+@kskemu+',总分,总分年名,总分班名'
set @njbm='年名'
set @bjbm='班名'
select @tsql=isnull(@tsql+',','')
            +'sum(case a.kemu when '''+kemu+''' then a.total else 0 end) '''+kemu+''', '
            +'(select count(1) from
               (select 1 ''d'' from cj b
                where b.kemu='''+kemu+''' group by b.xuehao
                having sum(b.total)>=(select sum(e.total) from cj e where e.xuehao=a.xuehao and e.kemu='''+kemu+''')) c) '+kemu+@njbm+', '
            +'(select count(1) from
               (select 1 ''d'' from cj b
                where b.kemu='''+kemu+''' and b.classname=a.classname group by b.xuehao
                having sum(b.total)>=(select sum(e.total) from cj e where e.xuehao=a.xuehao and e.kemu='''+kemu+''')) c) '+kemu+@bjbm+' '
 from (select distinct kemu from cj) t
select @tsql='select a.ksid, a.classname ''班级'',a.xuehao ''学号'',a.stuname ''姓名'','+@tsql+','
+' sum(a.total) ''总分'',
   (select count(1) from
    (select 1 ''d'' from cj b group by b.xuehao having sum(b.total)>=(select sum(e.total) from cj e where e.xuehao=a.xuehao)) c) ''总分年名'',
   (select count(1) from
    (select 1 ''d'' from cj b where b.classname=a.classname group by b.xuehao having sum(b.total)>=(select sum(e.total) from cj e where e.xuehao=a.xuehao)) c) ''总分班名''    
 from cj a
 where ksid= '+@conditions+'
 group by a.xuehao,a.stuname,a.classname,a.ksid '
set @tsql='insert into cjdetail('+@kskemu+') ' + @tsql
exec(@tsql)
GO

上面的过程,在SQL分析器中,完全可以了以下面的方面执行,
exec myproc 1
可是在ASP中却不能执行。

set objrs=server.CreateObject("adodb.recordset")
objrs.open "myproc 1 ",objconn,1,1

但是如果将过程中的语句
set @tsql='insert into cjdetail('+@kskemu+') ' + @tsql
去掉,在ASP是是可以了执行这个过程的。
我的想法是想将查询出来的数据,通过存储过程插入到一个新表中去。能不能通过简单的方法来替代过程插入啊。 SQL 存储过程?
[解决办法]
把这个:


set objrs=server.CreateObject("adodb.recordset")
objrs.open "myproc 1 ",objconn,1,1


改成这样试试:

set objrs=server.CreateObject("adodb.recordset")
objrs.open "exec myproc 1 ",objconn,1,1

[解决办法]
由于你是动态语句,也就是语句是动态生成的,所以你的方式也是合理的,其他也没什么更好的方法了。
[解决办法]
insert into table exec (proc)
這個不行嗎?
[解决办法]
你asp连接的数据库里面是否有cjdetail这个表?

热点排行