请大家帮忙,一个用变量为表名、字段名的存储过程不能返回结果,谢谢大家

peng0731 2005-07-25 02:03:48
有一个sqlserver存储过程如下:功能为根据某个编码返回值
ALTER PROCEDURE dbo.GetNameById
@sId varchar(20), --传入条件Id的值
@sCondition varchar(20), --匹配条件Id的对应字段名
@sSelTab varchar(50), --要查找的表名
@sSelName varchar(400), --要得到值的相关字段名
@@retName nvarchar(400) output --需要传回的@selName字段的值
AS
begin
declare @sql nvarchar(1000) --生成的sql语句
set @sql='select '+@@retName+'='+@sSelName+' From '+@sSelTab+' Where '+@sCondition+'='+@sId
exec sp_executesql @sql
--set @@retName = isnull(@@retName,'124')
end
RETURN
调用存储过程的时候没有返回值,而直接写成sql语句查询的时候,是有值的,是不是折段代码有问题?请大家帮忙看看,谢谢!
我调用的代码如下:
declare @xx varchar(400)
exec baseoper_getnamebyid '000000000011','tId','tTable','tName', @@retName = @xx output
print 'aa'+ @xx
结果没有任何参数,我在存储过程里最后加一句:set @@retName = isnull(@@retName,'124')
结果才显示为:aa124
...全文
157 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
peng0731 2005-07-25
  • 打赏
  • 举报
回复
多谢 paoluo(一天到晚游泳的鱼) ,问题终于解决了,马上结帖
paoluo 2005-07-25
  • 打赏
  • 举报
回复
@sId是一个字符串,在组合成动态语句的时候语句要做下处理。
paoluo 2005-07-25
  • 打赏
  • 举报
回复
@sId是一股额字符串,在组合成动态语句的时候语句要做下处理。
paoluo 2005-07-25
  • 打赏
  • 举报
回复
再试试

ALTER PROCEDURE dbo.GetNameById
@sId varchar(20), --传入条件Id的值
@sCondition varchar(20), --匹配条件Id的对应字段名
@sSelTab varchar(50), --要查找的表名
@sSelName varchar(400), --要得到值的相关字段名
@@retName nvarchar(400) output --需要传回的@selName字段的值
AS
begin
declare @sql nvarchar(1000) --生成的sql语句
set @sql='select @@retName='+@sSelName+' From '+@sSelTab+' Where '+@sCondition+'='''+@sId+''''
exec sp_executesql @sql,
N'@@retName nvarchar(400) output',
@@retName output
--set @@retName = isnull(@@retName,'124')
end
RETURN
phantomMan 2005-07-25
  • 打赏
  • 举报
回复
你的列名输入错误
peng0731 2005-07-25
  • 打赏
  • 举报
回复
多谢 libin_ftsafe(子陌红尘) 的帮助,可是还是出错啊
调用的时候提示:列名 '000000000011' 无效。
子陌红尘 2005-07-25
  • 打赏
  • 举报
回复
ALTER PROCEDURE dbo.GetNameById
@sId varchar(20), --传入条件Id的值
@sCondition varchar(20), --匹配条件Id的对应字段名
@sSelTab varchar(50), --要查找的表名
@sSelName varchar(400), --要得到值的相关字段名
@@retName nvarchar(400) output --需要传回的@selName字段的值
AS
begin
declare @sql nvarchar(1000) --生成的sql语句
set @sql='select @@retName='+@sSelName+' From '+@sSelTab+' Where '+@sCondition+'='+@sId
exec sp_executesql @sql,
N'@@retName nvarchar(400) output',
@@retName output
--set @@retName = isnull(@@retName,'124')
end
RETURN
peng0731 2005-07-25
  • 打赏
  • 举报
回复
不好意思,些错了,调用的语句是:
declare @xx varchar(400)
exec getnamebyid '000000000011','tId','tTable','tName', @@retName = @xx output
print 'aa'+ @xx

34,838

社区成员

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

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