日期:2014-05-19  浏览次数:20623 次

一个存储过程问题?
我准备写一个存储过程,达到输出任意的表的N个记录
但是始终行不通,在需要传递参数的存储过程中 就还没有成功过 那位大虾帮看看
create   proc   SkyCms
@TableName   VARCHAR(200),
@RowNumber   int
As  
declare   @TSql   varchar(100)
Set   @Tsql= "Select   Top   "+@RowNumber+ "   From   "+@TableName
Exec(@Tsql)
go

------解决方案--------------------
--试试
create proc SkyCms
@TableName VARCHAR(200),
@RowNumber int
As
declare @TSql varchar(8000)
Set @Tsql= 'Select Top '+convert(varchar(8000),@RowNumber)+ '* From '+ @TableName
Exec(@Tsql)
go



------解决方案--------------------
--try

create proc SkyCms
@TableName VARCHAR(200),
@RowNumber int
As
declare @TSql varchar(8000)
Set @Tsql= 'Select Top '+rtrim(@RowNumber)+ ' * From '+@TableName
Exec(@Tsql)
go
------解决方案--------------------
在以上SQL中的目的是转换数据类型
------解决方案--------------------
create proc SkyCms
@TableName VARCHAR(200),
@RowNumber int
As
declare @TSql varchar(8000)
Set @Tsql= 'Select Top '+rtrim(@RowNumber)+ ' * From '+@TableName
Exec(@Tsql)
go

------解决方案--------------------
对了。。
1、原来的@RowNumber是int型变量,跟目标串连接时,要转换成char()之类的类型再操作;
2、原先少了表列。。*