| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 724 人关注过本帖
标题:一个新手问题,先谢谢了!
只看楼主 加入收藏
sanctitude
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-10-9
收藏
 问题点数:0 回复次数:1 
一个新手问题,先谢谢了!
一个存储过程,在应用程序传入参数(表名)后,存储过程查询该表内"Number"列的最大值,并返回结果。

CREATE PROCEDURE GetMaxNum
@name varchar(8),
@num int output
AS
BEGIN
DECLARE @exestr nvarchar(600)
SET @exestr=N'(select '+@num+'=max(sNumber) from '+@name+')'
EXEC(@exestr)
SELECT @num --是调试用的
END

表结构:
sRecId int 4 --标识列
......
sNumber int 4 not null
........

执行语句:
EXEC GetMaxNum 'hqyg0001',0

错误消息:
服务器: 消息 245,级别 16,状态 1,过程 GetMaxNum,行 6
将 nvarchar 值 '(select ' 转换为数据类型为 int 的列时发生语法错误。

我用Sql server 时间不长,系统给出的错误信息很明显,那句该怎样写啊?

[此贴子已经被作者于2005-12-27 18:54:33编辑过]

搜索更多相关主题的帖子: 应用程序 target 最大值 blank 
2005-12-27 18:54
nic
Rank: 2
等 级:新手上路
威 望:4
帖 子:175
专家分:0
注 册:2005-11-1
收藏
得分:0 

你要转化数据类型,试试看:
SET @exestr=N'(convert(nvarchar (600),(select '+@num+'=max(sNumber) from '+@name+')'))

@num 是INT 数据类型,应该转化为NVARCHAR数据类型。

[此贴子已经被作者于2005-12-28 14:25:07编辑过]


2005-12-28 14:23
快速回复:一个新手问题,先谢谢了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027604 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved