求助:关于ASP执行带参数存储过程并返回记录集的问题。

果冻布丁 2014-03-10 04:45:03

CREATE PROCEDURE pCqtjHzRy --存储过程名
--变量定义
@sql1 varchar(8000),
@subt varchar(8000),
@c_cqrq1 varchar(8),
@c_cqrq2 varchar(8)

AS
BEGIN
--变量赋值
set @sql1 = 'select c_name '
set @subt =' (select * from cqtj_data where ( c_cqrq between '+@c_cqrq1+' and '+@c_cqrq2+' )) '

--SQL语句
select @sql1 = @sql1 + ' , sum(case c_cqlb when ''' + c_cqlb + ''' then c_cqsl else 0 end) [' + c_cqlb + ']'
from (select distinct c_cqlb from cqtj_data) as a
set @sql1 = @sql1 + ' from '+@subt +' t'+' group by c_name '

END
GO



上面是存储过程,请问,我要在ASP代码中,想获取这个存储过程返回的一个表格。改如何调用这个存储过程?并且我要将记录集fill 到一个table中。也就是想在页面上以表格的形式显示出来。

跪求高手帮忙。我真的晕了。
...全文
143 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
果冻布丁 2014-03-14
  • 打赏
  • 举报
回复
引用 6 楼 stubble 的回复:
[quote=引用 5 楼 qiaofuxiang 的回复:] 哎,问题让我想麻烦了 ,根本不用command。哎。只有正常的sQL就行了。

<%
ql_gethzry = "exec pCqtjHzRy  '20140101' ,'20140301'"
Set rs_gethzry =conn.execute(sql_gethzry)
%>
这就搞定了 。我勒个去。折腾了我两天。分享一下吧 。
才上网站 看你做出来 那就好了 [/quote] 呵呵,谢谢啊。不过现在又有一个问题。在使用 rs.cursorlocation = 3 的时候 提示缺少对象,我又晕了。
果冻布丁 2014-03-11
  • 打赏
  • 举报
回复
哎,问题让我想麻烦了 ,根本不用command。哎。只有正常的sQL就行了。

<%
ql_gethzry = "exec pCqtjHzRy  '20140101' ,'20140301'"
Set rs_gethzry =conn.execute(sql_gethzry)
%>
这就搞定了 。我勒个去。折腾了我两天。分享一下吧 。
异常异长 2014-03-11
  • 打赏
  • 举报
回复
引用 5 楼 qiaofuxiang 的回复:
哎,问题让我想麻烦了 ,根本不用command。哎。只有正常的sQL就行了。

<%
ql_gethzry = "exec pCqtjHzRy  '20140101' ,'20140301'"
Set rs_gethzry =conn.execute(sql_gethzry)
%>
这就搞定了 。我勒个去。折腾了我两天。分享一下吧 。
才上网站 看你做出来 那就好了
果冻布丁 2014-03-10
  • 打赏
  • 举报
回复
存储过程如下 :

CREATE PROCEDURE pCqtjHzRy --存储过程名
	--变量定义
	@c_cqrq1 varchar(8),
	@c_cqrq2 varchar(8)
	
AS
BEGIN
	--变量赋值
	declare @sql1 varchar(8000),@subt varchar(8000)
	set @sql1 = 'select c_name '
	set @subt =' (select * from cqtj_data where ( c_cqrq between '+@c_cqrq1+' and '+@c_cqrq2+' )) '
	
	--SQL语句
	select @sql1 = @sql1 + ' , sum(case c_cqlb when ''' + c_cqlb + ''' then c_cqsl else 0 end) [' + c_cqlb + ']'
	from (select distinct c_cqlb from cqtj_data) as a
	set @sql1 = @sql1 + ' from '+@subt +' t'+' group by c_name ' 
	
END
GO
ASP调用代码如下:

<%Dim cmd
				Set  cmd = Server.CreateObject("ADODB.Command")    '建立命令对象 

				Set  cmd.ActiveConnection=conn
				cmd.CommandType = 4    '指定要执行的是一个存储过程 ,或值为4
				cmd.CommandText = "{call pCqtjHzRy(?,?)}"    '存储过程名称  
				cmd.Parameters.Append cmd.CreateParameter ("@c_cqrq1",adVarChar,adParamInput)   '创建输入参数对象  
				cmd.Parameters.Append cmd.CreateParameter ("@c_cqrq2",adVarChar,adParamInput)   '创建输入参数对象  
				cmd("@c_cqrq1")=c_cqrq1  '取得输入参数 
				cmd("@c_cqrq2")=c_cqrq2  '取得输入参数 

				Set rs_gethzry = cmd.Execute    '执行存储过程
				Set cmd = Nothing 
%>
错误类型: ADODB.Command (0x800A0BB9) 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。 第 136 行 (cmd.Parameters.Append cmd.CreateParameter ("@c_cqrq1",adVarChar,adParamInput) '创建输入参数对象 ) 数据库表结构: 1 ID int 4 0 0 c_name nvarchar 50 0 0 c_gh nvarchar 50 0 0 c_bm nvarchar 50 0 0 c_cqrq nvarchar 50 0 0 c_cqlb nvarchar 50 0 0 c_cqsl nvarchar 50 0 0 c_cqsy nvarchar 500 1 0 c_input nvarchar 50 0 0 c_inputsj nvarchar 50 0 0 c_memo nvarchar 500 1 请教,为什么总提示数据类型的错误?我看了一晚上,真的看不出来了。晕死了 。请高手指点。
果冻布丁 2014-03-10
  • 打赏
  • 举报
回复
引用 1 楼 stubble 的回复:
’**通过Command对象调用存储过程** DIM MyComm,MyRst Set MyComm = Server.CreateObject("ADODB.Command") MyComm.ActiveConnection = MyConStr ’MyConStr是数据库连接字串 MyComm.CommandText = "getUserList" ’指定存储过程名 MyComm.CommandType = 4 ’表明这是一个存储过程 MyComm.Prepared = true ’要求将SQL命令先行编译 Set MyRst = MyComm.Execute Set MyComm = Nothing
请问如果存储过程有参数呢?我这个是需要带入参数的?应该怎么样的格式? 请指教!
异常异长 2014-03-10
  • 打赏
  • 举报
回复
’**通过Command对象调用存储过程** DIM MyComm,MyRst Set MyComm = Server.CreateObject("ADODB.Command") MyComm.ActiveConnection = MyConStr ’MyConStr是数据库连接字串 MyComm.CommandText = "getUserList" ’指定存储过程名 MyComm.CommandType = 4 ’表明这是一个存储过程 MyComm.Prepared = true ’要求将SQL命令先行编译 Set MyRst = MyComm.Execute Set MyComm = Nothing

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧