动态SQL基本使用求解

linguojin11 2008-07-03 09:30:26
--引用论坛上一兄弟的例子
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000

declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+name --正确情况的使用
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql



第二种
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000

declare @sql varchar(8000)
set @sql=‘’
select @sql=@sql+name
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql

1. 这两种情况区别在于结果之间 多了几个逗号区分(ISNULL中是如何实现的,能详细点最好)
(第一种情况的结果)bmid,bmname,hpmc,username
其实这个问题好象跟是由第2个问题引起的。

2. 假如select @sql=@sql+name换成 select @sql=@sql+name 的话就只能取得一个值了(当有多值时,select只能返回结果中的最后一个值,这个我知道),而select @sql=@sql+name为什么能返回多个值,难道select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢

2.

...全文
59 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linguojin11 2008-07-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhiguo2008 的回复:]
select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢

这个就是扫描一遍表,把name字段的值+起来
[/Quote]
扫描一遍?
zhiguo2008 2008-07-03
  • 打赏
  • 举报
回复
select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢

这个就是扫描一遍表,把name字段的值+起来
duanzhi1984 2008-07-03
  • 打赏
  • 举报
回复
select @sql=@sql+name 一直没变啊

不明白楼主第二个问题
duanzhi1984 2008-07-03
  • 打赏
  • 举报
回复
多一个逗号的目的:

bmid,bmname,hpmc,username

没逗号结果:

bmidbmnamehpmcusername
dadi5566 2008-07-03
  • 打赏
  • 举报
回复
软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础   1.1 数制及其转换      • 二进制、十进制和十六进制等常用制数制及其相互转换   1.2 数据的表示      • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)      • 非数值表示(字符和汉字表示、声音表示、图像表示)      • 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)   1.3 算术运算和逻辑运算      • 逻辑代数的基本运算和逻辑表达式的化简   1.4 数学基础知识      • 命题逻辑、谓词逻辑、形式逻辑的基础知识      • 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)      • 排列组合、概率论应用、应用统计(数据的统计分析)      • 运算基本方法(预测与决策、线性规划、网络图、模拟)   1.5 常用数据结构      • 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作      • Hash(存储地址计算,冲突处理)   1.6 常用算法      • 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法      • 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性  2.计算机系统知识   2.1 硬件知识    2.1.1 计算机系统的组成、体系结构分类及特性      • CPU和存储器的组成、性能和基本工作原理      • 常用I/O设备、通信设备的性能,以及基本工作原理      • I/O接口的功能、类型和特性      • I/O控制方式(中断系统、DMA、I/O处理机方式)      • CISC/RISC,流水线操作,多处理机,并行处理   2.1.2 存储系统      • 主存-Cache存储系统的工作原理      • 虚拟存储器基本工作原理,多级存储体系的性能价格      • RAID类型和特性   2.1.3 安全性、可靠性与系统性能评测基础知识      • 诊断与容错      • 系统可靠性分析评价      • 计算机系统性能评测方式   2.2 软件知识    2.2.1 操作系统知识      • 操作系统的内核(中断控制)、进程、线程概念      • 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)      • 存储管理(主存保护、动态连接分配、分段、分页、虚存)      • 设备管理(I/O控制、假脱机)      • 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)      • 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)      • 汉字处理,多媒体处理,人机界面      • 网络操作系统和嵌入式操作系统基础知识      • 操作系统的配置    2.2.2 程序设计语言和语言处理程序的知识      • 汇编、编译、解释系统的基础知识和基本工作原理      • 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用      • 各类程序设计语言主要特点和适用情况   2.3 计算机网络知识      • 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)      • 传输介质、传输技术、传输方法、传输控制      • 常用网络设备和各类通信设备      • Client/Server结构、Browser/Server结构      • LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接      • 因特网基础知识以及应用      • 网络软件      • 网络管理      • 网络性能分析   2.4 数据库知识      • 数据库管理系统的功能和特征      • 数据库模型(概念模式、外模式、内模式)      • 数据模型,ER图,第一范式、第二范式、第三范式      • 数据操作(集合运算和关系运算)      • 数据库语言(SQL)      • 数据库的控制功能(并发控制、恢复、安全性、完整性)      • 数据仓库和分布式数据库基础知识   2.5 多媒体知识      • 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式      • 简单图形的绘制,图像文件的处理方法      • 音频和视频信息的应用      • 多媒体应用开发过程   2.6 系统性能知识      • 性能指标(响应时间、吞吐量、周转时间)和性能设计     

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧