当前位置:首页 > 网络编程 > 数据库 > Mysql > 动态SQL语句

动态SQL语句

点击次数:22 次 发布日期:2008-11-22 16:55:34 作者:源代码网
源代码网推荐

1:普通SQL语句可以用Exec执行
eg:   Select * from tableName
      Exec("select * from tableName")


      sp_executesql N"select * from tableName"    -- 请注意字符串前一定要加N

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:  
declare @fname varchar(20)
set @fname = "[name]"
Select @fname from sysobjects                     -- 错误
Exec("select " + @fname + " from sysobjects")     -- 请注意 加号前后的 单引号的边上要加空格
exec sp_executesql N" select " + @fname + " from sysobjects"
当然将字符串改成变量的形式也可
    declare @s varchar(1000)
    set @s = "select " + @fname + " from sysobjects"
    Exec(@s)                -- 成功
    exec sp_executesql @s   -- 此句会报错

    declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000)
    set @s = "select " + @fname + " from sysobjects"
    Exec(@s)                -- 成功   
    exec sp_executesql @s   -- 此句正确,

3: 输出参数
eg:
declare @num,
        @sqls
set @sqls="select count(*) from  " + @servername + ".a.dbo.b"
exec(@sqls)
我如何能将exec执行的结果存入变量@num中

declare @num int,
        @sqls nvarchar(4000)
set @sqls="select @a=count(*) from "+@servername+".a.dbo.b"
exec sp_executesql @sqls,N"@a int output",@num output
select @num

 

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华