CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

什么是SQL中的动态查询

楼主wwwrain()2006-03-17 09:04:33 在 MS-SQL Server / 基础类 提问

什么是SQL中的动态查询?  
  是种存储过程吗?  
  我是初学,所以请大师们给我举个简单的例子,谢了先 问题点数:100、回复次数:6Top

1 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-03-17 09:08:53 得分 0

 
   
  动态sql语句基本语法    
  1   :普通SQL语句可以用Exec执行    
   
  eg:       Select   *   from   tableName    
                    Exec('select   *   from   tableName')    
                    Exec   sp_executesql   N'select   *   from   tableName'         --   请注意字符串前一定要加N    
   
  2:字段名,表名,数据库名之类作为变量时,必须用动态SQL    
   
  eg:        
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'    
  Select   @fname   from   tableName                             --   错误,不会提示错误,但结果为固定值FiledName,并非所要。    
  Exec('select   '   +   @fname   +   '   from   tableName')           --   请注意   加号前后的   单引号的边上加空格    
   
  当然将字符串改成变量的形式也可    
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'   --设置字段名    
   
  declare   @s   varchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功    
  exec   sp_executesql   @s       --   此句会报错    
   
   
   
  declare   @s   Nvarchar(1000)     --   注意此处改为nvarchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功            
  exec   sp_executesql   @s       --   此句正确    
   
  3.   输出参数    
  declare   @num   int,    
                  @sqls   nvarchar(4000)    
  set   @sqls='select   count(*)   from   tableName'    
  exec(@sqls)    
   
  --如何将exec执行结果放入变量中?    
   
  declare   @num   int,   @sqls   nvarchar(4000)    
  set   @sqls='select   @a=count(*)   from   tableName   '    
  exec   sp_executesql   @sqls,N'@a   int   output',@num   output    
  select   @num    
  Top

2 楼xeqtr1982(Visual C# .NET)回复于 2006-03-17 09:11:52 得分 0

楼上大侠正解:)学习Top

3 楼wgsasd311(自强不息)回复于 2006-03-17 09:12:23 得分 0

什么是SQL中的动态查询?  
  ===>exec('...')    
  or    
  sp_executesql    
  是种存储过程吗?  
  ===>是的  
  我是初学,所以请大师们给我举个简单的例子,谢了先  
  ==>  
  declare   @tbname   nvarchar(20),@n   int,@sql   varchar(40)  
  set   @tbname='sysobjects'  
  set   @n=10  
  set   @sql=N'select   top   '+cast(@n   as   Nvarchar)+N'   *   from   '+@tbname  
  exec(@sql)  
  Top

4 楼SQL_study(初学SQL)回复于 2006-03-17 10:05:08 得分 0

学习,不过我想问一句:下边这两句到底有什么区别,这个变量是什么情况的时候,可以不用加号和引号连接~  
   
  set   @sqls='select   @a=count(*)   from   tableName   '  
   
  set   @sql='select   top   '+@a+   '*   from   '+@tbnameTop

5 楼wts173(Knight Figo)回复于 2006-03-17 10:20:56 得分 0

upTop

6 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-03-17 10:35:30 得分 0

set   @sqls='select   @a=count(*)   from   tableName   '  
  --表示要把count(*)的返回值赋给@a变量,这时需要上面说的sp_executesql  
   
  set   @sql='select   top   '+@a+   '*   from   '+@tbname  
  --表示从表中提取前@a条数据  
  Top

相关问题

  • 什么是动态PL/SQL?
  • 动态查询
  • 动态查询
  • 动态查询
  • 如何在DELPHI中动态生成SQL查询语句?
  • 怎样在SQL查询中动态改变表
  • 急急...SQL PLUS怎样实行动态查询???
  • 动态sql语句中select into返回查询结果 的问题
  • 求ASP+SQL动态查询列表一个~~~~新年散分了
  • 动态SQL中不能含有模糊查询吗?

关键词

  • 查询
  • top
  • sql
  • 变量
  • fname
  • 动态
  • exec
  • executesql
  • filedname
  • nvarchar

得分解答快速导航

  • 帖主:wwwrain

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo