asp+存储过程:加和问题

hgwyl1 2013-03-15 11:27:41
因为不太会写,每次自己尝试一出错,页面就提示“等待响应”,然后就IIS就卡住了。即使打开其他IIS下正常站点,都是“等待响应”。

这个过程让人非常暴躁……

所以请教一下ASP+存储过程求和返回值的问题,请帮忙看看。

asp页面代码如下
<%
Set Cmd_1 = Server.CreateObject("ADODB.Command")
Set Cmd_1.ActiveConnection=conn
Cmd_1.CommandText="textsum"
Cmd_1.CommandType=4
CMD_1.Prepared = true
Cmd_1.Parameters.Append cmd_1.CreateParameter("@sum_number",200,2,50)
Cmd_1.Parameters.Append cmd_1.CreateParameter("@sum_totalprice",200,2,50)
Set rs_1=Cmd_1.Execute
sum_number=cmd_1("@sum_number")
sum_totalprice=cmd_1("@sum_totalprice")
set Cmd_1 = nothing
%>


存储过程testsum代码如下
USE [数据库名]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[testsum]
@sum_number int output,
@sum_totalprice numeric(18,1) output
AS
BEGIN
SELECT sum(number) as @sum_number,sum(totalprice) as @sum_totalprice FROM 表
END


请指教!

...全文
264 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hgwyl1 2013-03-16
  • 打赏
  • 举报
回复
引用 6 楼 shoppo0505 的回复:
SELECT @sum_number = sum(number), @sum_totalprice = sum(totalprice) FROM 表
完成! 非常感谢!!!
hgwyl1 2013-03-16
  • 打赏
  • 举报
回复
我试了一下,ASP里面的代码改好了,没问题。 现在是不懂怎么在存储过程中赋值。 我试了一下在存储过程中强制赋值,运行正常,asp页面也拿到了变量值。
USE [数据库名]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[testsum]
@sum_number int output,
@sum_totalprice numeric(18,1) output
AS
BEGIN
	SELECT sum(number) as sum_number,sum(totalprice) as sum_totalprice FROM 表
END
set @sum_number=1
set @sum_totalprice=2
请问怎么把select sum(number)as sum_number这里面的sum_number赋值给@sum_number咧?
hgwyl1 2013-03-16
  • 打赏
  • 举报
回复
引用 2 楼 shoppo0505 的回复:
SELECT sum(number) as sum_number,sum(totalprice) as sum_totalprice FROM 表
这个写法是正确的,我试了,因为我前面写as @sum_number,所以提示列名错误,我不写@就不提示了 可以正常运行,但是从存储过程——asp取不到值。
hgwyl1 2013-03-16
  • 打赏
  • 举报
回复
引用 2 楼 shoppo0505 的回复:
你确定你的存储过程能够编译? SELECT sum(number) as @sum_number,sum(totalprice) as @sum_totalprice FROM 表 这么写错误。@在SQL里面都是定义变量的,你这里as后面是要加列名。你这里不需要output变量 直接写成: SELECT sum(number) as sum_number,s……
如果我写 select sum(number) as sum_number from 表 的话 调试器直接提示sum(number)列名无效 所以现在很纠结~
shoppo0505 2013-03-16
  • 打赏
  • 举报
回复
引用 5 楼 hgwyl1 的回复:
我试了一下,ASP里面的代码改好了,没问题。 现在是不懂怎么在存储过程中赋值。 我试了一下在存储过程中强制赋值,运行正常,asp页面也拿到了变量值。 SQL code?123456789101112131415USE [数据库名]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[testsu……
SELECT @sum_number = sum(number), @sum_totalprice = sum(totalprice) FROM 表
shoppo0505 2013-03-15
  • 打赏
  • 举报
回复
你确定你的存储过程能够编译? SELECT sum(number) as @sum_number,sum(totalprice) as @sum_totalprice FROM 表 这么写错误。@在SQL里面都是定义变量的,你这里as后面是要加列名。你这里不需要output变量 直接写成: SELECT sum(number) as sum_number,sum(totalprice) as sum_totalprice FROM 表 就行。 ASP不太懂,应该那里也要把@去掉。
hgwyl1 2013-03-15
  • 打赏
  • 举报
回复
我是楼主,突然发觉MSSQL提示:列名无效。 修改至下面这样就可以通过调试
USE [数据库名]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[testsum]
@sum_number int output,
@sum_totalprice numeric(18,1) output
AS
BEGIN
	SELECT sum(@sum_number) as number,sum(@sum_totalprice) as totalprice FROM 表
END
怎么似乎跟ASP中写的SQL反过来了。 不应该是select sum(列名) as 变量 from 表的样子么……

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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