SQL 存储过程里能用中间表或者临时表吗?

我在存储过程里首先要得到一个dataset,包含多条记录;然后我想一条记录一条记录的对它们做一些处理,然后将dataset输出.
问:在存储过程里能用一个中间表来临时存放这dataset吗?该怎么实现?

还有一个小问题:怎么讲一个datetime变量的时间部分改为00:00:00.000呢?就是保持日期不变,将时间改为一个固定值,有什么简便的方法?


建一个临时表就是了
1. 存储过程中 create table #Temp(……) ,然后Insert 数据
2. 存储过程中 select * into #Temp from ……
这两种模式都可以形成一个当前会话可见的临时表,如果需要建全局可见的就使用##。操作起来跟普通表一样。

SELECT CONVERT(varchar(10), GETDATE(), 111) AS dv
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-01
楼上说的没错 不过记得删除 drop table #Temp本回答被提问者采纳

SQL 存储过程里能用中间表或者临时表吗?
建一个临时表就是了 1. 存储过程中 create table #Temp(……) ,然后Insert 数据 2. 存储过程中 select * into #Temp from ……这两种模式都可以形成一个当前会话可见的临时表,如果需要建全局可见的就使用##。操作起来跟普通表一样。二 SELECT CONVERT(varchar(10), GETDATE(), 111) AS ...

SQL SERVER 中存储过程、游标、嵌套循环、CASE、中间表使用实例
在SQL SERVER中,存储过程`PRO_EducationInputStatus`用于处理教育输入状态,它涉及到游标、嵌套循环、CASE以及中间表的使用。首先,定义了四个变量来存储计划号、月、课程代码和班次。存储过程的核心部分是创建一个临时表#mytemp,用于存储课程通过与否的信息。通过游标`schnoCursor`,逐个获取`Trainsched_Ma...

sql存储过程中如何动态创建数组?
好像 SQL Server 存储过程里面, 没有 数组 这种东西的。你可以使用 临时表, 也就是 # 开头的表。或者 定义一个 内存表, 也就是 @开头的表, 来实现 类似的功能。例如:1> BEGIN 2> DECLARE @myTable TABLE (Status INT);3> DECLARE @idx AS INT;4> SET @idx = 1;5...

SQL中的函数和存储过程有啥区别?
而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,...

存储过程 中使用create Table
最好不要直接使用create table, 你最好使用select...into...来创建临时表,并添加数据(如select * into #temp from table_name where...),最后删除即可,并不建议使用create table来创建,存储过程中是不建议使用DDL语句的。在SQL Server中使用临时表是非常常见的,性能有一点影响,但这种几百几...

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的...
首先你要知道“另一个存储过程”的结果集的所有列的类型。假设“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么就在你说的“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集如下CREATE PROCEDURE sp2ASDECLARE @t table(a int,b int,...

SQL SERVER 一个数据库中使用大量的存储过程,会影响性能吗??
2、存储过程在数据库中无论是否编译好,其效率都要比客户端临时向数据库发送指令调数据来得要高,因为至少减少了发向服务器的指令的量。况且很多的中间值、临时值如果不通过存储过程来实现的话,就只能先全取到客户端,这样会大大增加网络负担与服务器的负钽。3、正如微软所说,存储过程来实现,可以...

SQL Server 存储过程 中while循环问题
创建一个表标量或者临时表,在循环体中把一条一条的数据插入临时表 然后存储过程结束时输出该表

存储过程中创建临时表显示查询结果,提示对象名无效
用全局临时表:ALTER procedure [dbo].[Keyword_Query](@table_name nvarchar(100)=N'',@col_name nvarchar(200)=N''--@col_name 格式为col1,col2,col3 ,@key_word nvarchar(200)=N'')as begin declare @sql nvarchar(2000) ;if ( @col_name =N''and @table_name <>N'')begin se...

sql 2000临时表只能使用一次
临时表只能存在相同的批处理里面,单批处理执行完就自动删除了,你第一次执行语句的时候,是两条一起执行,在同一个批处理里面,所以select * from #abc能够识别临时表,第二次执行的时候你是先执行第一句,后执行第二句,SQL就看做是两个批处理,第一次执行的时候创建了临时表,...

相似回答
大家正在搜