请问存储过程怎样返回一个字段的值?

CTBOK 2003-09-08 12:39:36
我现在一个reguser表
id,username

现在有一个select语句
select * from reguser where username like '%aaa%'

假设现在查询之后有三个记录,我要将这三个记录的id值以参数型式返回,请问应该怎样写呢?

另外,如果我要返回不定个数的参数呢?应该怎样做?(我现在要在ASP中调用,这些不定个数的参数我又应该怎样调用呢?谢谢!!!)
...全文
162 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghtghtmalone 2003-09-08
  • 打赏
  • 举报
回复
1:可以返回记录集
2:你可以根据需要带的参数来写SQL语句,将每个SQL语句加起来,再定义一个长的串,
最后一次执行;
用这种形式:
DECLARE @SQL_STR VARCHAR(4000)
DECLARE @ADD_STR VARCHAR(4000)
@SQL_STR=@SQL_STR+@ADD_STR
……
……
EXEC @SQL_STR
CrazyFor 2003-09-08
  • 打赏
  • 举报
回复
create proc 名 (@strID output)
....

---declare @strID varchar(8000)
set @strID=''
select @strID=@strID+cast(id as varchar) from reguser where username like '%aaa%'
hjb111 2003-09-08
  • 打赏
  • 举报
回复
用游标读取!
pengdali 2003-09-08
  • 打赏
  • 举报
回复
返回结果集后,循环读取这个结果集。
LuoYongYong 2003-09-08
  • 打赏
  • 举报
回复
返回记录集
CTBOK 2003-09-08
  • 打赏
  • 举报
回复
不行呀,我整个过程是这样的
CREATE PROCEDURE check_user
@userid int OUTPUT,
@company_name varchar(50)
AS
Select @userid=userid From reguser Where company_name = @company_name
return @userid --->这时改成return也不行
GO

在ASP中调用
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

Set objCmd = Server.CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = objConn
objCmd.CommandText = "check_user" '存储过程名称
objCmd.CommandType = 4 '命令类别为4,表示为存储过程
objCmd.Parameters.Append objCmd.CreateParameter("@company_name=kkk", 200, 1, 50)
objCmd.Parameters.Append objCmd.CreateParameter("RETURN_VALUE", 3, 4, 3)-->这里改成objCmd.CreateParameter("@userid", 3, 2, 3) 不行
'Set objRs = objCmd.Execute
Response.Write objCmd.Parameters("RETURN_VALUE").Value ->这里改 objCmd.Parameters("@userid").Value 不行
Set objCmd.ActiveConnection = Nothing
Set objCmd = Nothing

返回不了值呀~~~为什么呢?
lionstar 2003-09-08
  • 打赏
  • 举报
回复
create prcedure proc_name
@param1 int,--输入参数,类型int
@param2 varchar(20) ,--输入参数,类型变长字符
@param3 int output --输出参数,类型int
AS
select @param3=value from table_name where '条件'
return --人工结束,返回


开心就好!!!!
aierong 2003-09-08
  • 打赏
  • 举报
回复
在你的ASP里面处理好一些

利用一个循环即可

DO WHILE RS.EOF<>TRUE

LOOP
CTBOK 2003-09-08
  • 打赏
  • 举报
回复
如果限定只是三个记录呢?又怎么读取并以参数的形式返回?如果三个不行,一个呢?我在联机丛书里面找不到相应的资料呀,麻烦提供一下代码,谢谢~~~
sdhdy 2003-09-08
  • 打赏
  • 举报
回复
返回记录集就是以recordset的形式返回到asp中读取?
是的。
但我不想这样呢?我想把结果赋值给变量,然后以参数的形式返回,应该怎样做?
因为参数的个数不定,所以在存储过程里无法定义参数的个数
最好还是已记录集方式返回,在asp里逐个读取
CTBOK 2003-09-08
  • 打赏
  • 举报
回复
返回记录集就是以recordset的形式返回到asp中读取?
但我不想这样呢?我想把结果赋值给变量,然后以参数的形式返回,应该怎样做?

34,874

社区成员

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

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