存储过程不能返回字符串?

亚细亚 2008-06-11 01:42:25
我写了一个存储过程,如下:
create procedure setNormal_p
@P_ID int,
@returnChar varchar (1000) output
as
SET NOCOUNT ON
begin
set @returnChar='abc'
return @returnChar

end
用asp测试调用该存储过程,发现不能返回'abc',如果给@returnChar赋值为@returnChar='123',
那么就可以返回123这个数值,请问这是为什么?
...全文
219 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanjs 2008-06-11
  • 打赏
  • 举报
回复
应该设置output型的

你那个return是整个存储过程的返回值

?=proc_test(?,?)

而你的存储过程是

proc_test(?,?)
-晴天 2008-06-11
  • 打赏
  • 举报
回复
<%
'先设置数据连接对象
dim pid,returnchar
pid=10
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = conn
.CommandText = "setNormal_p"
.CommandType = 4
.Prepared = true
.Parameters.append .CreateParameter("@P_id",3,1,4,pid)
.Parameters.append .CreateParameter("@ReturnChar",200,2,1000,returnchar)
.Execute
end with
response.write MyComm(1)
set myComm=nothing
%>
arrow_gx 2008-06-11
  • 打赏
  • 举报
回复
up
lgxyz 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qianjin036a 的回复:]
SQL codecreate procedure setNormal_p
@P_ID int,
@returnChar varchar (1000) output
as
SET NOCOUNT ON
begin
set @returnChar='abc'
-- return @returnChar

end

go

declare @t varchar(1000)
exec setNormal_p 3,@t output
select @t

/*
--------------------------------------------------------------------------------------------------------------…
[/Quote]
-狙击手- 2008-06-11
  • 打赏
  • 举报
回复
主要是output
wzy_love_sly 2008-06-11
  • 打赏
  • 举报
回复
return 字符因该会报错啊
nzperfect 2008-06-11
  • 打赏
  • 举报
回复

看得出,楼主不会用asp返回存储过程的output参数值.
-晴天 2008-06-11
  • 打赏
  • 举报
回复
create procedure setNormal_p  
@P_ID int,
@returnChar varchar (1000) output
as
SET NOCOUNT ON
begin
set @returnChar='abc'
-- return @returnChar

end

go

declare @t varchar(1000)
exec setNormal_p 3,@t output
select @t

/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
abc

(1 行受影响)

*/
中国风 2008-06-11
  • 打赏
  • 举报
回复
在聯機上有說明:
引數
integer_expression

這是傳回的整數值。預存程序可以向發出呼叫的程序或應用程式傳回一個整數值。


傳回類型
選擇性地傳回 int。

附註:
除非另有說明,否則所有系統預存程序都會傳回 0 值。這表示成功,非零值表示失敗。
wzy_love_sly 2008-06-11
  • 打赏
  • 举报
回复
set @returnChar='abc'

就够了

return 只能整数
中国风 2008-06-11
  • 打赏
  • 举报
回复
只支持數字
昵称被占用了 2008-06-11
  • 打赏
  • 举报
回复
调用方法问题,应该指明@returnChar参数是output参数

或者用语句这么调用
declare @r varchar(1000) 
exec setNormal_p 1,@r output
select @r as result
nzperfect 2008-06-11
  • 打赏
  • 举报
回复
@returnChar 没有取到值吧
chuifengde 2008-06-11
  • 打赏
  • 举报
回复
declare @s varchar(1000)
exec setNormal_p '234',@s out
select @s
字符串是这样返回的

34,590

社区成员

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

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