asp中使用存储过程返回的值

有存储过程:
CREATE  PROCEDURE scturs 
@acco varchar(20),
@usrid int output,
@usracco varchar output,
@usrpwd varchar output
 AS
select usr_id, usr_acco, usr_pwd  from user where usr_acco=@Acco
return
GO


asp文件中的代码:
<%
set cmd=server.createobject("ADODB.Command")
	cmd.ActiveConnection = Application("dbstr")
	cmd.CommandType = 4
	cmd.CommandText = "scturs"
	cmd.Parameters.Refresh
	cmd.Parameters("@acco")="abc"
	cmd.Execute
	chk=cmd.Parameters(0) '如何取回值
set cmd=nothing
	response.write chk  '显示结果
%>

需要返回的结果应该是:
usrid:1
usracco:abc
usrpwd:abc1


如果存储过程中的select中的条件去掉,那查询到的结果将是很多用户的记录集,这里又将用什么办法来显示所有的记录呢?

回复人: zjcxc(邹建) ( ) 信誉:349 2004-7-21 9:39:47 得分:0
 
<%
set cmd=server.createobject("ADODB.Command")
	cmd.ActiveConnection = Application("dbstr")
	cmd.CommandType = 4
	cmd.CommandText = "scturs"
	cmd.Parameters.Refresh
	cmd.Parameters("@acco")="abc"
	cmd.Execute

	usrid=cmd.Parameters("@usrid") '如何取回值
	usracco=cmd.Parameters("@usracco") '如何取回值
	usrpwd=cmd.Parameters("@usrpwd") '如何取回值
set cmd=nothing
	response.write chk  '显示结果
%>

Top
回复人: zjcxc(邹建) ( ) 信誉:349 2004-7-21 9:40:49 得分:0
 
chk=cmd.Parameters(0)  '这个是取存储过程中,通过 return 语句返回的值
对于输出参数的返回值,应该直接取对应输出参数,即:
usrid=cmd.Parameters("@usrid")


Top
回复人: sweiquan(青石子) ( ) 信誉:100 2004-7-21 10:08:25 得分:0
 
奇怪了,
usrid=cmd.Parameters("@usrid")取不到值,数据表中数据是应该有的
也没有报错



Top
回复人: zjcxc(邹建) ( ) 信誉:349 2004-7-21 10:43:56 得分:0
 
--没有注意,你的存储过程没有写对

CREATE  PROCEDURE scturs 
@acco varchar(20),
@usrid int output,
@usracco varchar output,
@usrpwd varchar output
AS
select @usrid=usr_id,@usracco=usr_acco,@usrpwd=usr_pwd  
from [user]
where usr_acco=@Acco
GO

Top
回复人: sweiquan(青石子) ( ) 信誉:100 2004-7-21 13:19:09 得分:0
 
谢谢!
我以前没有在asp使用过存储,所以很基础的东西都不会!

我已经修改了存储过程,能取到值,但有问题的是,仅取到第一个字符
结果:
usrid:1
usracco:a
usrpwd:a

这又是怎么回事呀?再麻烦你了。

Top
回复人: zjcxc(邹建) ( ) 信誉:349 2004-7-21 13:23:21 得分:90
 
CREATE  PROCEDURE scturs 
@acco varchar(20),
@usrid int output,
@usracco varchar(50) output,  --这里的大小根据你表中对应字段的定义,下面的也一样
@usrpwd varchar(50) output
AS
select @usrid=usr_id,@usracco=usr_acco,@usrpwd=usr_pwd  
from [user]
where usr_acco=@Acco
GO


Top
回复人: skyboy0720(飞) ( ) 信誉:100 2004-7-21 13:26:46 得分:10
 
在ASP和存储过程中,参数定义的大小,最好一致!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET调用存储过程可以使用ADO.NET库提供的SqlCommand对象。下面是一个示例方法,该方法执行名为"myStoredProc"的存储过程返回一个DataTable对象: ```csharp public DataTable CallStoredProcedure(string connectionString, string storedProcedureName, SqlParameter[] parameters) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(storedProcedureName, connection)) { command.CommandType = CommandType.StoredProcedure; if (parameters != null) { command.Parameters.AddRange(parameters); } connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); return dataTable; } } } ``` 在上面的代码,connectionString参数是连接字符串,storedProcedureName参数是存储过程的名称,parameters参数是存储过程的参数列表。要使用此方法,请提供正确的连接字符串和存储过程名称,并将参数作为SqlParameter数组传递。例如,以下代码调用名为"GetCustomers"的存储过程,并将一个名为"city"的参数传递给它: ```csharp string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"; string storedProcedureName = "GetCustomers"; SqlParameter[] parameters = { new SqlParameter("@city", "London") }; DataTable dataTable = CallStoredProcedure(connectionString, storedProcedureName, parameters); ``` 在上面的代码,连接字符串应该被替换为你的数据库连接字符串,GetCustomers应该是你的存储过程的名称,@city应该是你的存储过程参数的名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值