本文适用的环境
数据库管理系统SQL Sever2000
前言
在编写SQL程序是我们有可能遇到这样的问题,参数是动态数量的标识列表(比如我们要处理一批有限的人员的信息,我们传递的参数就可以这样表示 人员的标识一(主键),人员表识二,人员标识三。。。。。。),在这个参数中标识数量是动态的可能是五个,也可能是六个。
在需要根据这个标识列表去查询人员并返回人员的信息时 ,我们可能很自然的想到这样的写法




这样写 ,数据库分析成为了
Select 姓名,性别,年龄 From Persons where Name =@ ParamIDList
(和上面的语句是等价的)
这样情况的原因是因为数据库不会去分析变量中的, 号,并将变量拆分开来重新组合成新的SQL语句。
目录:
1.0 Table 变量和临时表,数据库中的表的区别和相同点
2.0 解决上面问题的两种途径
2.1 使用 Exec(SQL命令字符串)的方式 动态的返回数据
2.2 使用Table数据类型方式解决
1.0 Table 变量和临时表,数据库中的表的区别和相同点
Table变量的概念
Table变量是一种特殊的数据类型,在SQL程序中可以将多维的信息零时的保存到Table变量中,供后 续处理,该数据类型保存数据的形式为一组行,这些行将可作为表值函数的结果集返回。
Table 变量不能作为 存储过程,和自定义函数的变量
临时表
由会话创建于tempdb 数据库的 sysobjects 表中的临时表 ,
Table和临时表,数据库中表的区别:
对SQL语句的支持
Table 变量
对于表的列的约束类型仅仅为PRIMARY KEY、UNIQUE KEY 和 NULL
INSERT INTO table_variable EXEC 存储过程。
支持基本的SELECT、INSERT、UPDATE 和 DELETE基本的表操作语句
临时表和数据库中实际的表 对表的语句的支持是一致(全部支持)。
实际的存储位置和生存的时间
Table 对象 和其他的类型的变量生成的周期是一样的,有明确的作用域,在超过作用域时系统自动的删除Table对象。
Table 对象实际上和其他类型的变量一样保存在内存中
临时表和数据库中的表都存储在实际的数据库中
临时表 #TableName的作用域是当前的会话中
##TableName 的作用域为全局量
2.0解决上面问题的两种途径
2.1 使用 Exec(SQL命令字符串)的方式 动态的返回数据






2.2 使用Table数据类型方式解决



Declare @Index_Param int /*参数 记录分隔符的位置*/
Declare @NeedParse varchar(500) /*参数 没有处理的字符串*/





















【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)