zoukankan      html  css  js  c++  java
  • 关于从动态SQL中取值得问题

    问题描述:求一存储过程,取得指定表中最大的ID号,这里的表是参数

    解答: 

    CREATE PROCEDURE SelectMax
        
    @max INT OUTPUT,
        
    @Tablename VARCHAR(50)
    AS 
        
    -- 注意,此处不能直接写成 exec('select @max = max(ID) from ' + @Tablename),因为变量不在同一个作用域
        EXEC'select max(ID) as ret into tlk from ' + @Tablename)

        
    SELECT  @max = ret
        
    FROM    tlk
        
    DROP TABLE tlk

        
    RETURN @max

    上面的解决办法实际上是在数据库中创建了 数据表!!(此方法不好)

    修正后的答案如下:

     
    CREATE PROCEDURE SelectMax
        
    @max INT OUTPUT,
        
    @Tablename VARCHAR(50)
    AS 
        
    DECLARE @sql NVARCHAR(4000), @params NVARCHAR(4000)
        
    SET @sql = N'select @maxId=max(ID) from ' + QUOTENAME(@Tablename)
        
    SET @params = N'@maxId int output'

        
    EXEC sp_executesql @sql@params@maxId = @max OUTPUT

        
    RETURN @max


  • 相关阅读:
    四则运算
    3.12----对potplayer的使用评价
    对软件工程的一点思考
    个人附加作业
    附加题
    个人最终总结
    结对编程总结
    修改后的四则运算
    阅读程序回答问题
    Visual studio 2013的安装和单元测试
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/1663721.html
Copyright © 2011-2022 走看看