日期:2014-05-18  浏览次数:20572 次

SQL SERVER2000存储过程小问题,高手进,在线等之!
我想建立这样一个存储过程:通过传入表名和该表的ID字段名(ID字段为int型),返回这个表的最大ID,求解!

------解决方案--------------------
SQL code
CREATE PROC TEST 
(
    @Table varchar(20),
    @name        int
)
as 
SELECT MAX(ID) FROM @TABLE WHERE IDname=@name

------解决方案--------------------
SQL code
CREATE PROC TEST 
(
    @Table varchar(20),
    @colname  varchar(20)
)
as 
exec('SELECT MAX('+@colname+') FROM '+@TABLE)

------解决方案--------------------
SELECT MAX(@colname) FROM @TABLE
这么些不行,因为@TABLE定义为字符串变量了,并非表格名称。

2楼的才是正确的。
------解决方案--------------------
try this,
SQL code

CREATE PROC TEST  
( @Table varchar(20),
  @colname varchar(20),
  @outmax int output)
as
begin
 declare @sql varchar(6000)
 select @sql='SELECT MAX('+@colname+') FROM '+@TABLE

 create table #o(outmax int)
 insert into #o(outmax) exec(@sql)
 select @outmax=outmax from #o
end

-- 调用方法
declare @om int
exec TEST [表名],[字段名],@om output
select @om

------解决方案--------------------
SQL code
CREATE PROC TEST  
(
  @Table varchar(20),
  @colname varchar(20),
  @outmax int output
)
as  
    declare @sql nvarchar(100)
    set @sql='SELECT @max=MAX('+@colname+') FROM '+@TABLE
    exec sp_executesql @sql,N'@max int output',@outmax output

------解决方案--------------------
SQL code

--调用:
declare @max int
exec TEST  '表名','字段名',@max output
select @max

------解决方案--------------------
方法2,
SQL code

create proc TEST  
( @Table varchar(20),
  @colname varchar(20),
  @outmax int output)
as
begin
 declare @sql nvarchar(4000)
 select @sql=N'SELECT @m=MAX('+@colname+') FROM '+@TABLE
 exec sp_executesql @sql,N'@m int output',@m=@outmax output
end

-- 调用方法
declare @om int
exec TEST [表名],[字段名],@om output
select @om

------解决方案--------------------
探讨

SQL code
CREATE PROC TEST
(
@Table varchar(20),
@colname varchar(20),
@outmax int output
)
as
declare @sql nvarchar(100)
set @sql='SELECT @max=MAX('+@colname+') FROM '+@TABLE
e……

------解决方案--------------------
探讨

我现在要把最大的值返回,怎么写呢?
CREATE PROC TEST
(
@Table varchar(20),
@colname varchar(20),
@outmax int output
)
as
exec('SELECT '+@outmax+'=MAX('+@colname+') FROM '+@TABLE)
这样,我想把返回值给@out……

------解决方案--------------------
楼上的有几个结果都对诶!