资源描述:
《把存储过程结果集selectinto到临时表》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、把存储过程结果集SELECTINTO到临时表 在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种。 一.SELECTINTO 1.使用selectinto会自动生成临时表,不需要事先创建 select*into#tempfromsysobjectsselect*from#temp 2.如果当前会话中,已存在同名的临时表 select*into#tempfromsysobjects 再次运行,则会报错提示:数据库中已存在名为'%1!'的对象。Msg2714,Level16,State6,Line2Thereisalrea
2、dyanobjectnamed'#temp'inthedatabase. 在使用selectinto前,可以先做一下判断: ifOBJECT_ID('tempdb..#temp')isnotnulldroptable#temp select*into#tempfromsysobjects select*from#temp 3.利用selectinto生成一个空表如果要生成一个空的表结构,不包含任何数据,可以给定一个恒不等式如下: select*into#tempfromsysobjectswhere1=2select*fro
3、m#temp 二.INSERTINTO1.使用insertinto,需要先手动创建临时表 1.1保存从select语句中返回的结果集 createtabletest_getdate(c1datetime) insertintotest_getdateselectGETDATE() select*fromtest_getdate 1.2保存从存储过程返回的结果集 createtable#helpuser(UserNamenvarchar(128),RoleNamenvarchar(128),LoginNamenvarc
4、har(128),DefDBNamenvarchar(128),DefSchemaNamenvarchar(128),UserIDsmallint,SIDsmallint) insertinto#helpuserexecsp_helpuser select*from#helpuser 1.3保存从动态语句返回的结果集 createtabletest_dbcc(TraceFlagvarchar(100),Statustinyint,Globaltinyint,Sessiontinyint) insertintotest_dbcc
5、exec('DBCCTRACESTATUS') select*fromtest_dbcc 对于动态SQL,或者类似DBCC这种非常规的SQL语句,都可以通过这种方式来保存结果集。 2.不能嵌套使用insertexec语句 2.1下面这个例子,尝试保存sp_help_job的结果集到临时表,发生错误 createtable#JobInfo(job_iduniqueidentifier,originating_servernvarchar(128),namenvarchar(128),enabledtinyint,descri
6、ptionnvarchar(512),start_step_idint,categorynvarchar(128),ownernvarchar(128),notify_level_eventlogint,notify_level_emailint,notify_level_netsendint,notify_level_pageint,notify_email_operatornvarchar(128),notify_netsend_operatornvarchar(128),notify_page_operatornvarchar
7、(128),delete_levelint,date_createddatetime,date_modifieddatetime,version_numberint,last_run_dateint,last_run_timeint,last_run_outcomeint,next_run_dateint,next_run_timeint,next_run_schedule_idint,current_execution_statusint,current_execution_stepnvarchar(128),current_re
8、try_attemptint,has_stepint,has_scheduleint,has_targetint,typeint) insertinto#JobInfoexecmsdb..sp_help_job 返回错误信息:IN