请教,存储过程执行的一个小错误
CREATE proc read_info
@dgdcctable varchar(20),
@dgdccid varchar(20),
@sid varchar(50)
as
declare @sql varchar(100)
set @sql = 'select * from ' + @dgdcctable + ' where ' + @dgdccid + ' = ( ' + @sid + ') '
EXEC(@sql)
GO
如果这样执行exec read_info 'dghouseinfo ', 'newcode ', '2006129102250 '就会出错
服务器: 消息 8115,级别 16,状态 8,行 1
将 numeric 转换为数据类型 numeric 时发生算术溢出错误。
这样就可以exec read_info 'dghouseinfo ', 'newcode ', '274 '
怎么处理?谢谢
------解决方案--------------------CREATE proc read_info
@dgdcctable varchar(20),
@dgdccid varchar(20),
@sid varchar(50)
as
declare @sql varchar(100)
set @sql = 'select * from ' + @dgdcctable + ' where ' + @dgdccid + ' = ( ' ' ' + @sid + ' ' ') '
EXEC(@sql)
GO
------解决方案--------------------CREATE proc read_info
@dgdcctable varchar(20),
@dgdccid varchar(20),
@sid varchar(50)
as
declare @sql varchar(8000)
set @sql = 'select * from ' + @dgdcctable + ' where ' + @dgdccid + ' = ( ' + @sid + ') '
EXEC(@sql)
GO
------解决方案--------------------CREATE PROC READ_INFO
@DGDCCTABLE VARCHAR(20),
@DGDCCID VARCHAR(20),
@SID VARCHAR(20)
AS
SET NOCOUNT ON
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT * FROM ' + @DGDCCTABLE + ' WHERE ' + @DGDCCID + ' = ( ' ' ' + @SID + ' ' ') '
EXEC SP_EXECUTESQL (@SQL)
GO
EXEC READ_INFO 'DGHOUSEINFO ', 'NEWCODE ', '274 '
------解决方案--------------------在where比较时 '2006129102250 '这个数据不能转换成 newcode列的数据类型~~