您现在的位置: 爱51代码网 >> 范文 >> 文章正文
SQLSERVER2008在存储过程中执行动态SQL语句的问题

SQLSERVER2008在存储过程中执行动态SQL语句的问题

我想要达到的效果就是:在根据条件返回记录数后,能够根据返回的记录数去继续执行下面的SQL语句,进而返回结果,同时在页面上显示的结果为10:
CREATE proc select_areasAssociation_sort
@condition varchar(100)
as
declare @regularSortCount int,@sortCount int,@sql varchar(500)
--返回固态排名的记录数
set @sql='select '+@regularSortCount+'=COUNT(1) from AreasAssociation
where RegularSort is not null and RegularSort>0 and '+@condition
exec @sql
--返回动态排名的记录数
set @sql='select '+@sortCount+'=COUNT(1) from AreasAssociation
where Sort is not null and Sort>0 and '+@condition
exec @sql
--当动态排名和固定排名都不存在时
if(@regularSortCount=0 and @sortCount=0)
begin
--select top 10 * from AreasAssociation where PositionID=2
--and CrabType=1 ORDER BY newID()
return
end
--当固定排名存在而动态排名不存在时
else if(@regularSortCount>0 and @sortCount=0)
begin
。。。。。。。
但是执行到”--返回固态排名的记录数”的时候就报错了,各位大侠给点建议吧

一个是@regularSortCount变量是int型,需要转换成字符型才能与字符拼接
另一个是要想用动态sql输出@regularSortCount变量需要用sp_executesql来执行

SQL code?declare @sql nvarchar(max),@count intset @sql='select @c=count(1) from test 'exec sp_executesql @sql,N'@c int output',@count outputselect @count

这个要用括号括起来,不然会认为是存储过程,exec(@sql)

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    excel导入mssql数据库数字成
    sql 2008 远程过程调用失败 
    mssql左连接显示左表全部数据
    android编译时出现'Unab
    Android 仿 WP7 布局
    windows下搭建SVN服务器及配
    javascript中级联下拉列表
    was程序启动不起来控制台页面
    WebSphere 安装页面提示浏览
    WebSphere 运行环境linux 更
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |