SQL过程中临时表的问题

我写一个过程,里面包含很多个临时表,并建立了索引和主键,执行这个过程大概需要8秒钟的时间。但是多个用户去看这个表的时候,就会出现临时表中的索引或者主键建立重复,是因为这个临时表还没有释放,然后又要去建立这个临时表照成的。请问各位大神有没有什么好的解决办法。在线等答案。

1个回答

请问你的问题解决了么,我碰到和你一样的问题!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
存储过程中临时表的问题
我在存储过程这样建临时表:rnexecute immediate 'CREATE GLOBAL TEMPORARY TABLE Tab( nOptID number) ON COMMIT PRESERVE ROWS';rn;;;;rn然后execute immediate'drop table Tab';rn在PL/SQL中测试是提示 '试图创建,更改或删除正在使用的临时表中的索引'rn如果我把这句execute immediate'drop table Tab';去掉,在前台java程序中第一次调用这个存储过程不会出错,但第二次调用就会提示'名称以由现有对象使用,在"proname"第25行,也就是创建临时表的那行'rn请问哪位高手指点下rn
存储过程中临时表问题
这是我存储过程中的一段代码rnset @wheresql=' and p1.status=1'rnSET @strSql=N'SELECT top 200 productid,productname into #t FROM cc_product p1 INNER JOIN dbo.CC_ProductClass p2 ON p2.ClassId=p1.ClassId WHERE 1=1 '+@wheresql+' order by p1.updatetime DESC'rnEXEC(@strSql)rnSELECT * FROM #t rnrn为什么下面SELECT * FROM #t ,提示#t不存在?
SQL在存储过程中使用临时表
1 CREATE OR REPLACE PROCEDURE PRODUCT_TEMP_UPDATE_PRC AS 2 PC_DELESTR VARCHAR2(50); --删除临时表记录语句 3 PC_CREATESTR VARCHAR2(500); --创建临时表 4 TABEXT VARCHAR2(10); --用于判断临时表是否存在中间变量 5 6 CUR...
存储过程中的临时表问题
CREATE PROCEDURE aa(opinion)rnbeginrncreate temporary table tmp_aa(name VARCHAR(50) not null);rninsert into tmp_aa select distinct vote_user from vote_info where vote_opinion='opinion' order by vote_time desc limit 0,20;rnupdate user set respect=respect+1 where user_name in (select * from tmp_aa);rnend;rnrn输入到insert行的时候,mysql老是说tmp_aa表不存在,可是这是怎么一回事?明明定义了的啊?????愤怒中
SQL:关于存储过程中使用临时表的问题
为什么同样的语句测试的时候可以,放到存储过程中就提示JCode字段无效,是不是临时表在存储过程的生命周期的问题还是我的写法有错误?rn另外在存储过程中使用临时表需要Drop临时表吗?存储过程使用完临时表就会自动消失的吧?rnrnselect a.*,b.JCode,b.FundName into #t from BM_FCombWinTbl a inner join BM_FCombDetailTbl b rn on a.DetailId=b.DetailId rn where b.CombId in(select CombId from BM_FundCombTbl rn where CombType=101201 and UserId=888)rnrnrnselect #t.* into #t2 from #t,(select jcode,max(wdate) as wdate from #t group by jcode) b where #t.jcode=b.jcode and #t.wdate=b.wdaternselect #t2.*,vv.NetVal,vv.DayAddPer into #t3 from #t2 INNER JOINrn BM_F_NetVTbl vv ON #t2.JCode = vv.JCode and #t2.wdate=vv.ddaternrnselect * from #t3 where id in(select max(id) from #t3 group by WDate,JCode)
存储过程中创建临时表的问题????
rn 我在存储过程中创建临时表 且用于下次查询,代码如下:rn rn ALTER PROCEDURE dbo.selectDepAndUserrn(rn @DepID int,rn @UserID intrn)rnASrn select DepID,DepName,DepNumClass into #DepB_temp from DepB where DepNumClass=@DepIDrn rn rn SELECT UserB.UserID, UserB.UserInfoName, UserB.UserName, UserB.DepID,#DepB_temp.DepID,rn #DepB_temp.DepName,#DepB_temp.DepNumClassrnFROM #DepB_temp INNER JOINrn UserB ON #DepB_temp.DepID = UserB.DepID rnrn rn RETURN rnrnrn 程序运行结果 为: 运行dbo."selectDepAndUser" ( @DepID = 2, @UserID = 24 ).rnrn 存储过程为改为:rnrn select DepID,DepName,DepNumClass into #DepB_temp from DepB where DepNumClass=@DepIDrn rn select * from #DepB_temprnrn 后输出结果一样。rn rn 请问我的临时表是不是创建有问题。请各位帮帮看看
过程中,对临时表查询的问题.
create procedure testrnbeginrn --按条件查询库存表,并保存到临时表中rn create table #tmp(rn pc_id int default 0 not null,rn dpt_id int default 0 not null,rn shelf_code varchar(20) null,rn goods_id int default 0 not null,rn offer_id int default 0 not null,rn goods_sl numeric(9,2) default 0 not null,rn buy_price money default 0 not null,rn qty numeric(18,4) default 0 not null,rn zt_qty numeric(18,4) default 0 not nullrn )rn select @str='insert into #tmp(pc_id, dpt_id, shelf_code, goods_id, offer_id, goods_sl, buy_price, qty, zt_qty) ' +rn 'select a.pc_id, a.dpt_id, a.shelf_code, a.goods_id, a.offer_id, a.goods_sl, a.buy_price, a.rk_qty-a.ck_qty as qty, a.zt_qty '+rn 'from tbl_stock_qty a, tbl_goods_info b, tbl_kind_info c where a.goods_id=b.goods_id and b.kind_id=c.kind_id 'rn exec(@str)rn select * from #tmprnendrnrn目的是把查询结果保存到#tmp里面, 然后再根据条件对#tmp里面内容进行不同的分组查询. 我在最后执行select * from #tmp,但是在执行过程test的时候#tmp中没数据.rnrn@str这个是根据输入条件拼出来的语句.
存储过程中创建临时表的问题。
我想做一个这样的东西,举个例子说好点,比如有几个班级,选出每个班每个学生的几门课的考试分数,然后列出来,每个班级添加一个合计行,计算各科成绩的总分。怎么用存储过程实现?存储过程要几个参数,比如日期型,统计成绩的开始和结束日期,还有班级名称,用来查询某个班级的成绩。请高手指教!
关于存储过程中临时表的问题
[code=SQL]rnCREATE PROCEDURE sp_transport_ttl2_yxhrn@s_project varchar(30),rn@s_vihicleno varchar(10),rn@s_dt1 datetime,rn@s_dt2 datetimernrnASrnCREATE TABLE #temp_transport_ttl_yxhrn(rndeliveryno varchar(20) ,rntrucker varchar(30) null,rncishu integer default 0,rnsum_volume integer default 0,rnjiazhi integer default 0,rnchaoshi integer default 0,rn)rnINSERT INTO #temp_transport_ttl_yxhrn(deliveryno,trucker,cishu,sum_volume,chaoshi)rnSELECT rn ikea_delivery.delivery_no ,rn (ikea_delivery.trucker+' '+ikea_delivery.vihicle_no) as '司机\车牌号',rn sum(case when ikea_delivery.waybill_date between @s_dt1 and @s_dt2 then 1 else 0 end) as '送货次数',rn sum(ikea_delivery.sum_volume) as '总运输体积',rn--case when ikea_delivery.vihicle_no = @s_vihicleno then ikea_delivery.sum_volume else 0 end) as '总运输体积',rn sum(case when ikea_delivery.flag7_dt_todoor > ikea_delivery.pre_send_date then 1 else 0 end) as '送货超时次数'rn FROM ikea_deliveryrn WHERErnikea_delivery.project= @s_project AND rn((ikea_delivery.vihicle_no = @s_vihicleno AND @s_vihicleno <> '全部') OR (@s_vihicleno = '全部' ))AND rn(ikea_delivery.waybill_date between @s_dt1 and @s_dt2)rnGROUP BY ikea_delivery.delivery_no ,rn(ikea_delivery.trucker+' '+ikea_delivery.vihicle_no)rnrndeclare @s_jiazhi decimal(18,2)rndeclare @s_deliveryno varchar(20)rndeclare @li_cursor_rows_1 integer, @i integer rnselect @i = 1 rndeclare cursor_temp scroll cursor for select deliveryno from #temp_transport_ttl_yxhrnopen cursor_temprnselect @li_cursor_rows_1 = @@cursor_rowsrnwhile @i<= @li_cursor_rows_1rnbeginrn fetch absolute @i from cursor_temp into @s_deliveryno rn if @@fetch_status <> 0 break rnselect @s_jiazhi = Sum( ikea_delivery_detail.amount ) from ikea_delivery_detail where ikea_delivery_detail.delivery_no =@s_deliverynornif @s_jiazhi is null select @s_jiazhi = 0 rnupdate #temp_transport_ttl_yxhrn set jiazhi=@s_jiazhirnwhere deliveryno = @s_deliverynornrn select @i = @i + 1 rnendrnclose cursor_temprndeallocate cursor_temprnrnselect * from #temp_transport_ttl_yxhrndrop table #temp_transport_ttl_yxhrnGOrn[/code]rnrnrnrn上面的代码不用看太仔细。我只想问 我建的临时表#temp_transport_ttl_yxhrnrn[code=SQL]rnSELECT rn ikea_delivery.delivery_no ,rn (ikea_delivery.trucker+' '+ikea_delivery.vihicle_no) as '司机\车牌号',rn sum(case when ikea_delivery.waybill_date between @s_dt1 and @s_dt2 then 1 else 0 end) as '送货次数',rn sum(ikea_delivery.sum_volume) as '总运输体积',rn--case when ikea_delivery.vihicle_no = @s_vihicleno then ikea_delivery.sum_volume else 0 end) as '总运输体积',rn sum(case when ikea_delivery.flag7_dt_todoor > ikea_delivery.pre_send_date then 1 else 0 end) as '送货超时次数'rn[/code]rnrn是不是这样一SELECT完 数据就自动进入临时表里了啊rnrn小弟新手! 别笑话rnrn
存储过程中使用临时表的问题。
我刚才在写一个存储过程时,用到了一个临时表,总是运行不正常。rn其中Table1无主键,且有重复的字段。rnTable1和Table2都是通过参数传值过去。rnrn存储过程大概是这样的:rnrnSet @str = 'SELECT IDENTITY(int,1,1) AS id,Value1,Value2 INTO #temp FROM ' +@Table1rnExecute(@str)rnrnSet @str = 'INSERT ' + @Table2 rnSet @str = @str + ' SELECT Value1,Value2 FROM #temp WHERE id IN 'rnSet @str = @str + '(SELECT MIN(id) AS id FROM #temp GROUP BY Value1)'rnExecute(@str)rnrn运时总提示rn对象"#temp" 不存在.rnrn我找不到原因,rn但当我把#temp改成##temp后rn好像就不会出错了.rnrn请各位指点一二
存储过程中插入临时表的问题
[code=sql]rnif exists (select * from tempdb.dbo.sysobjects where id = object_id N'tempdb..#TEMP_xx') and type='U')rnrnbegin--存在临时表#TEMP_xxrn if (@count >0)rn begin--@count>0rn insert into #TEMP_xx (a,b)rn select a,b from arn endrn elsern begin--@count<0rn insert into #TEMP_xx (a,b)rn select a,b from brn endrnendrnelsernbegin--不存在临时表rn if (@count >0)rn begin--@count>0rn select * into #TEMP_xx from arn endrn elsern begin--@count<0rn select * into #TEMP_xx from brn endrnendrn[/code]rn这一段语句放在存储过程中执行的是提示“已存在#TEMP_xx ”,但是明明没有#TEMP_xx 啊,rn应该是sql语法的问题,因为有两个select * into #TEMP_xx ,可是有判断啊,不存在 “已存在#TEMP_xx ”的问题啊,请问应该怎么改呢?
在存储过程中创建临时表的问题
我在一个存储过程中需要创建临时表rn@parameter --传进来的参数,intrnif @parameter=1rn create table #table1(id int,...)rnelse if @parameter=2rn create table #table1(name1 char(10),...)rnrn创建的时候显示#table1已经存在,如果不是临时表就没问题?这个如何解决?
存储过程中使用临时表的问题
在一个存储过程中为什么这样写不行?因为我不想用太多个临时表,所以要删除了再插入数据,这样不行吗?rnrnif(object_id('tempdb..#t') is not null)rn drop table #trnselect * into #t from trnif(object_id('tempdb..#t') is not null)rn drop table #trnselect * into #t from trnrn提示:数据库中已存在名为 '#t' 的对象。rnrn已经删除了为什么还提示已存在名为 '#t' 的对象。
临时表用在存储过程中的问题
我先建了一个临时表TMP_A,是session级别的(on commit preserve rows)rnrn我在SP中往这个临时表插入数据做中间计算,然后连续执行两次这个SP(传给它的参数不同)rnrn我的疑问是:rn1.第一次运行完这个SP以后,临时表会自动清空吗?如果会就没问题了,两次运行SP不会相互影响。rn2.但如果不会的话,那第二次执行时临时表里的数据就会重复了,第二次运行的结果就不对了,那有什么办法解决这个问题呢?rnrn
怎样在SQL Server存储过程中使用临时表?
我建立了一个存储过程:rnCREATE PROCEDURE Test @CustomerID char(5)rnASrnrnCREATE TABLE #tbrn(rncol char(5)rn)rnINSERT INTO #tb (col) VALUES (@CustomerID)rnSELECT col FROM #tbrnDROP TABLE #tbrnrn然后在VB中调用:rnDim param As New ADODB.Parameterrnparam.Direction = adParamInputrnparam.Name = "@CustomerID"rnparam.Size = 5rnparam.Type = adCharrnparam.Value = "aaaaa"rnDim cmd As New ADODB.Commandrncmd.ActiveConnection = connrncmd.CommandText = "Test"rncmd.CommandType = adCmdStoredProcrncmd.Parameters.Append paramrnrnDim rs As New ADODB.RecordsetrnSet rs = cmd.Executernrn现在得到的rs,状态是关闭的。也就是说rs.State为0,无论做什么操作都会报错。rn应该怎么做?rnThanks.rn
sql 存储过程中关于创建一个临时表
CREATE Table #tmprn(rnid int identity(1,1) primary KEY,--这是自增idrnrn)rnINSERT INTO #tmprnrnSELECT rn很多列rnfrom 表arnrnSELECT TOP (@PageSize) * FROM #tmprnWHERE (id NOT IN (SELECT TOP (@PageSize*@PageIndex) id FROM #tmp ))rnwhere这一句会报错[img=https://img-bbs.csdn.net/upload/201707/26/1501051644_438329.png][/img]
存储过程中临时表的生成
存储过程中,因为sql语句相当长,需要这样的格式exec(str1+str2+str3)生成表1.rn本来设计返回表1就可以了,后来又加了表2,需要对表1连接表2生成最终数据。rn但我不想改变最初设计的表1的内容,rn有什么办法把表1变成临时表,然后再操作它?
在存储过程中使用临时表?
如何存储过程中使用临时表?能写一下创建,使用和用完后取消临时表的语法吗?rnrnrn还有string aa=null 和string aa=""有什么区别?
存储过程中创建临时表
CREATE OR REPLACE PROCEDURE UNFOLDBOM_LASTrn(WODATE varchar2, CODE VARCHAR2)rn ASrn -- EXPORT数rn ITEMCODE VARCHAR2(20);rn WOCODE VARCHAR2(64);rn WO_CODE VARCHAR2(64);rn STUFFCODE VARCHAR2(20);rn MANUALNO VARCHAR2(20);rn STR_DATE VARCHAR2(10);rn END_DATE VARCHAR2(10);rn APPLYQTY NUMBER(18,8);rn TRADECODE VARCHAR2(20);rn ITEMCODECLASS VARCHAR2(20);rn REGQTY NUMBER(18, 8);rn FACTQTY NUMBER(18, 8);rn BOMVER VARCHAR2(10);rn iCount NUMBER;rn -- 企业BOM数rn BOMITEM VARCHAR2(20);rn GROSSQTY NUMBER(18,8);rn ITEMCODEDCLASS VARCHAR2(20);rnrn -- 外购rn ITEMCODED VARCHAR2(20);rn QTY NUMBER(18,8);rn BEGINDATE date;rn ENDDATE date;rn LEAVE NUMBER(18,8);rn ITEM_CODE_D1 VARCHAR2(20);rn ITEMCODED1QTY NUMBER(18,8);rn TID NUMBER(10);rnbeginrnrnrn CREATE global temporary table ATEMPPROCESSrn (rn BMS_WO_ID number(18, 0) NOT NULL,rn BMS_WO_CODE VARCHAR2(64) NULL,rn BMS_WO_DATE VARCHAR2(32) NULL,rn BMS_WO_OPEN_DATE VARCHAR2(32) NULL,rn ITEM_CODE VARCHAR2(64) NOT NULL,rn ITEM_CODE_CLASS VARCHAR2(20) NULL,rn ITEM_CODE_D VARCHAR2(64) NOT NULL,rn ITEM_CODE_D_CLASS VARCHAR2(20) NULL,rn ITEM_CODE_REQ_QTY number(18, 8) NULL,rn ITEM_CODE_FACT_QTY number(18, 8) NULL,rn ITEM_CODE_D_REQ_QTY number(18, 8) NULL,rn ITEM_CODE_D_FACT_QTY number(18, 8) NULL,rn TYPE_CODE VARCHAR2(2) NOT NULL,rn FLAG VARCHAR2(1) NULL,rn STEP VARCHAR(10) NOT NULLrn )rnrn这是我存储过程的前面的几行,运行到 CREATE global temporary table ATEMPPROCESSrn这行总是报错,PROCEDURE BMSDB.UNFOLDBOM_LAST 编译错误rnrn错误:PLS-00103: 出现符号 "CREATE"在需要下列之一时:rn begin case declare exitrn for goto if loop mod null pragma raise return select updatern while with rn < pipern行:34rn独自解决不了,请指点
存储过程中的临时表使用方法
创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
存储过程中使用临时表
现有一学生表STUDENT,包含三个字段,分别为学号sno(数值)、姓名sname(字符串)、成绩score(数值 两位小数),其中学号为主键,要求:写一个存储过程,输入四个参数,第一个,类型,第二个,学号,第三个,姓名,第四个,成绩。(输入类型包括Q查询,U修改,D删除)rn输入Q,查询输入的第一个学号的信息rn输入U,根据学号修改学生的姓名和程序,姓名和成绩为第二个第三个参数.并将修改后的信息查询出来rn输入D,删除输入学号的学生信息。并显示要删除的学生的信息.用临时表.rnrncreate or replace procedure pro_student (typ char,stuno number,stuname varchar2,stuscore number) asrnv_stuno number;rnv_stuname varchar2(50);rnv_stuscore number; rnbeginrn case lower(typ)rn when 'q' thenrn select sno into v_stuno from student where sno=stuno;rn select sname into v_stuname from student where sno=stuno;rn select score into v_stuscore from student where sno=stuno;rn dbms_output.put_line(to_char(v_stuno)||' '||v_stuname||' '||to_char(v_stuscore)); rn when 'u' thenrn update student set sname=stuname,score=stuscorern where sno=stuno;rn commit; rn when 'd' thenrn execute immediatern 'create global temporary table student_temp as select * from studentrn where sno=stuno on commit delete rows'; rn delete from student where sno=stuno; rn --select * from student_temp; rn end case; rn end;rnrn查询和修改都没问题。rn用临时表时,提示未正确结束,求高手指点下怎么写
存储过程中的临时表
[code=SQL]rnCREATE DEFINER=`root`@`%` PROCEDURE `sp_select_planstate`(rnpid intrn)rn COMMENT '计划状态查询'rnbegin rndeclare done int default 0;rndeclare childid int; rndeclare planid int; rndeclare cur_5 cursor for select id from t_plan where parent_id=pid; rndeclare cur_6 cursor for select plan_id from t_usecase where plan_id=pid; rndeclare continue handler for not found set done = 1;rndrop table if exists state_temp;rnCREATE TEMPORARY TABLE state_temp( rnstate intrn);rnset max_sp_recursion_depth = 5;rninsert into state_temp(state) select plan_state from t_plan where id=pid;rnopen cur_5;rnfetch cur_5 into childid;rnwhile done=0 dorn call sp_select_planstate(childid);rn fetch cur_5 into childid;rnend while;rnclose cur_5;rn set done=0;rnopen cur_6;rnfetch cur_6 into planid;rnwhile done=0 dorn insert into state_temp(state) select usecase_state from t_usecase where plan_id=planid;rn fetch cur_6 into planid;rnend while;rnclose cur_6;rnselect * from state_temp;rnend;rn[/code]rn需求效果:查询出特定id的计划的状态放入临时表,继续查询这个计划的子计划的状态,也放入临时表,依次类推,最后查询计划包含的用例的状态,也放入临时表,最终取出临时表的状态.rn上面的存储过程存在的问题是在临时表中它只存储用例和用例对应的计划的状态,计划的父计划的状态被删除了(因为递归的原因),哪位大个给该下,能够保存所有的状态,或者给点别的思路也可以,谢谢!
在存储过程中使用临时表
如何在存储过程中使用临时表?rn存储过程中需要使用临时表缓存若干查询数据,以用于和其它用户表的联合查询、操作rn采用动态SQL可以创建出临时表,但不能在程序其它部分进行显式SQL操作rn请问有何解决方案?rn
在存储过程中声明临时表
在sqlserver 的存储过程中,声明一个临时表可以这样写rndeclare @表名 table rn(rn [objid] [Varchar](128) NULL rn)rn请问在oracle的存储过程中如何写啊!rn
存储过程中临时表报错
在查询分析上代码运行正常,以此代码做了一个存储过程老是报错,请老师们帮忙看看,谢谢!rn[code=SQL][/code]rnSET ANSI_NULLS ONrnGOrnSET QUOTED_IDENTIFIER ONrnGOrn-- =============================================rn-- Author: rn-- Create date: rn-- Description: rn-- =============================================rnCREATE PROCEDURE aaarnASrnset nocount onrnselect * into #Balance1448239DA7A54BD58892CBBC0DEC114D from t_balance where 1=0 rngorn SELECT * into #TempVoucherEntryDECD1EEA55D64DC983C1582240D35EE1rn from (SELECT e.FVoucherID,e.FAccountID,e.FDetailID,e.FCurrencyID,rn e.FEntryID,e.FDC,e.FAmountFor,e.FAmount,e.FMeasureUnitID,e.FQuantity,rn McLdgNoCal=CASE WHEN (ISNULL(e.FInternalInd,'#')='McLdgNoCal') THEN 1 ELSE 0 END ,rn TransferPL = CASE WHEN (ISNULL(v.FInternalInd,'#')='TransferPL') THEN 1 ELSE 0 END,rn FYear, FPeriod rn FROM t_VoucherAdjust vrn INNER JOIN t_VoucherEntry e ON v.FVoucherID=e.FVoucherIDrn Where ( v.FYear= 2011 and v.FPeriod >=2 and v.FPeriod <= 4 ) and Isnull(v.FPosted,0) =0 Union All rnSELECT e.FVoucherID,e.FAccountID,e.FDetailID,e.FCurrencyID,rn e.FEntryID,e.FDC,e.FAmountFor,e.FAmount,e.FMeasureUnitID,e.FQuantity,rn McLdgNoCal=CASE WHEN (ISNULL(e.FInternalInd,'#')='McLdgNoCal') THEN 1 ELSE 0 END ,rn TransferPL = CASE WHEN (ISNULL(v.FInternalInd,'#')='TransferPL') THEN 1 ELSE 0 END,rn FYear, FPeriod rn FROM t_Voucher vrn INNER JOIN t_VoucherEntry e ON v.FVoucherID=e.FVoucherIDrn Where ( v.FYear= 2011 and v.FPeriod >=2 and v.FPeriod <= 4 ) and Isnull(v.FPosted,0) =0 ) A Where 1=0 rngornrn执行结果(代码很多,上面只是选取了其中的一部分):rn(0 行受影响)rnrn(3530 行受影响)rnrn(1078 行受影响)rnrn(64 行受影响)rnrn(1014 行受影响)rnrn(3530 行受影响)rnrn(1080 行受影响)rnrn(98 行受影响)rnrn(25 行受影响)rnrn(1197 行受影响)rn消息 208,级别 16,状态 0,第 10 行rn对象名 '#Balance1448239DA7A54BD58892CBBC0DEC114D' 无效。rn消息 208,级别 16,状态 0,第 1 行rn对象名 '#Balance1448239DA7A54BD58892CBBC0DEC114D' 无效。rn消息 208,级别 16,状态 0,第 1 行rn对象名 '#ItemBal582833' 无效。rn消息 208,级别 16,状态 0,第 1 行rn对象名 '#ItemBal582833' 无效。rn消息 208,级别 16,状态 0,第 1 行rn对象名 '#ItemBal582833' 无效。rn消息 3701,级别 11,状态 5,第 1 行rn无法对 表 '#ItemBal582833' 执行 删除,因为它不存在,或者您没有所需的权限。rn消息 102,级别 15,状态 1,第 2 行rn
存储过程中创建临时表.
调用完存储过程,临时表会自动删除的吧。rn如果没有显示drop table #tb这样会占用数据库很大的资源吗。rnrn
SQL 插入临时表 的问题
临时表rn序号,计划日期,金额 ,实际日期,金额rnrn数据来源(先)rn插入数据rn序号,计划日期, 金额rn1 2010-01-01 100rn2 2010-02-01 100rn3 2010-03-01 100rn4 2010-04-01 100rn5 2010-05-01 100rn要插入的实际数据rn序号,实际日期, 金额rn1 2010-01-01 200rn2 2010-02-01 200rn3 2010-03-01 200rn4 2010-04-01 200rn5 2010-05-01 200rn6 2010-06-01 200rn7 2010-07-01 200rn要求显示的数据rn序号,计划日期,金额 ,实际日期,金额rn1 2010-01-01 100 2010-01-01 200rn2 2010-02-01 100 2010-02-01 200rn3 2010-03-01 100 2010-03-01 200rn4 2010-04-01 100 2010-04-01 200rn5 2010-05-01 100 2010-05-01 200rn6 1900-01-01 0 2010-06-01 200rn7 1900-01-01 0 2010-07-01 200rnrn请问怎么插入方便,计划数据与实际 分别来源于两个不同表rn
sql建立临时表问题
sqldrop = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[我想在这里添加已经登陆的用户名]')rn怎么写啊,获取登陆用户名是guserinfo.zh
****SQL全局临时表问题
100个用户同时调用某一个存储过程,而这个存储过程中有这么一句话rncreate table ##tbl(id int)    --是建立100个##tbl 还是一个##tblrn会不会出现问题啊?rn
sql server临时表的问题
sql server临时表是对应每一个连接的,随着连接的断开而消失。临时表都是存在tempdb库中,我想问一下,要是有两个连接都建立#temp表,在tempdb库的sysobject表中会不会有两条#temp的记录?
SQL临时表问题??
在开发时遇到这样一个问题,执行rnAD0Query.Close;rnAD0Query.SQL.Text:=‘ IF EXISTS(SELECT 1 FROM TEMPDB.DBO.SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB.DBO.#temp_qxsj1' )) DROP TABLE #temp_qxsj1' rn +‘ select * into #temp_qxsj1 from Table_a'rnAD0Query.ExeclSql;rnAD0Query1.Close;rnAD0Query1.SQL.Text:='select * from #temp_qxsj1'rnAD0Query1.Open;rn提示找不到#temp_qxsj1表,明明没关闭连接,临时表应该不会释放掉rn但如果改成这样就没问题,可以查到数据:rnAD0Query.Close;rnAD0Query.SQL.Text:=‘ IF EXISTS(SELECT 1 FROM TEMPDB.DBO.SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB.DBO.#temp_qxsj1' )) DROP TABLE #temp_qxsj1' rn +‘ select * into #temp_qxsj1 from Table_a'rn +' 'rn +'select * from #temp_qxsj1'rnAD0Query.Open;rnrn难道要放在同一个语句里同时执行才行吗??不放在同一语句里同时执行临时表会释放掉??rn
SQL临时表问题
临时表@tbrnrn如何从临时表里面取出 前面 的 几百条语句rnrn这个 top 数据 是动态的rnrntop 100 或者rntop 200 或者rntop 300 或者rntop 400rn这种语句定义了一个临时表@tb了,并且里面语句有数据rnrn@str='select top '+str(@count)+'.........请问这句要怎么写??我这里怎么总是提示:必须声明标量变量 "@tb"rnrnexec(@str)
关于SQL临时表问题
我现在有个疑问,我有2个数据库,2个数据库里面都有个存储过程,存储过程是一样的,都会创建一个全局临时表,然后对全局临时表操作,然后有2个SQL作业分别调用这2个存储过程,一个的调用时间是10分钟,还有一个调用时间是1分钟,我想问的是2个存储过程创的这个全局临时表会不会有冲突或有什么影响,希望用过的高手帮忙解决下
sql 2005 临时表问题
我在存储过程中用rnrnselect * into #tmp from tableArnrn来创建临时表。rnrn1 这个存储过程可能有多个用户使用。是否还用在临时表中定义个userid 来区分每个用户呢。rnrn2 调用结束后这个临时表是否会自动释放呢。rn
SQL临时表未定义问题
一个有点包含统计性质的GridView.里面多大数据都是同一张表Company。但GridView的页面上提供了多个不同的查询条件。这些查询条件,大多数是不直接等同于Company表的。也就是间接和Company表相关的其他如用户表User,用户角色类型表UserRole.rn或全国省市表,。GridView除了要显示Company表外,还要统计这家企业的供应产品、留言、招聘等各个表的发表条数。rn代码如下:rn=================================rnALTER procedure GetCompanyListrn(rnrn@UserType int,rn@ManageSort int,rn@ProvideID int,rn@CityID int,rn@ProdBigSort int,rn@ProdSmallSort int,rn@Key Nvarchar(150),rn@KeyIndex int,rnrnrn@startIndex int,rn@endIndex int,rn@docount bit)rnrnasrnset nocount onrnrnrndeclare @strFilter NVarChar(300)rnset @strFilter=''rn---------------------------------------------------- Where过滤条件----------------------------------------------------------rnif(@UserType<>1985)rnset @strFilter=@strFilter+' and (User.UserType='+CAST ( @UserType AS NVarChar)+')' rnrnif(@ManageSort<>1985)rnset @strFilter=@strFilter+' and (Company.ManageSort='+CAST ( @ManageSort AS NVarChar)+')' rnrnif(@ProvideID<>1985)rnset @strFilter=@strFilter+' and (City_1.ID='+CAST(@ProvideID as Nvarchar)+')'rnrnif(@CityID<>1985)rnset @strFilter=@strFilter+' and (City.ID='+CAST(@CityID as nvarchar)+')'rnrnif(@ProdBigSort<>1985)rnset @strFilter=@strFilter+' and (CompanySort_1.ID='+CAST(@ProdBigSort as Nvarchar)+')'rnrnif(@ProdSmallSort<>1985)rnset @strFilter=@strFilter+' and (CompanySort.ID='+CAST(@ProdSmallSort as Nvarchar)+')'rnrnif(@Key<>'')rnbeginrnrnif(@KeyIndex=0)rn--根据企业会员ID查询rnset @strFilter=@strFilter+' and (Company.UserID='+CAST(@Key as Nvarchar)+')' rnrnif(@KeyIndex=1)rn--根据企业会员法人姓名查询rnset @strFilter=@strFilter+' and (Company.CompanyUser='''+CAST(@Key as Nvarchar)+''')'rnrnif(@KeyIndex=2)rn--根据企业名称查询rnset @strFilter=@strFilter+' and (Company.CompanyName='''+CAST(@Key as Nvarchar)+''')'rnrnif(@KeyIndex=3)rn--根据地区关键字查询rnset @strFilter=@strFilter+' and (Company.Address like ''%'+@Key +'%'' )'rnrnif(@KeyIndex=4)rn--根据主营产品关键字查询rnset @strFilter=@strFilter+' and (Company.ProdList like ''%'+@Key+'%'')'rnrnendrnrn---------------------------------------------------- Where过滤条件----------------------------------------------------------rnrnbeginrn----------------------------------------------------统计行数的临时表--------------------------------------------------------rnrn--统计商机行数(临时表主键:Company.ID)rndeclare @TempSca table(Companyid int,intcount int)rninsert into @TempScarnselect Company.ID,count(Sca.ID) rnfrom Scarninner join Companyrnonrn Sca.CompanyID=Company.IDrngroup by Company.IDrnrn--统计求职招聘行数(临时表主键:Company.ID)rndeclare @TempJob table(Companyid int,intcount int)rninsert into @TempJobrnrnselect Company.ID,count(JobZP.ID) rnfrom JobZPrninner join Companyrnonrn JobZP.UserID=Company.UserIDrngroup by Company.IDrnrn--统计客户发送的留言条数(临时表主键:Company.ID)rndeclare @TempLeave table(Companyid int,intcount int)rninsert into @TempLeavernrnselect Company.ID ,count(LeaveWord.ID)rnfrom LeaveWordrninner join CompanyrnONrnLeaveWord.SendCompanyID=Company.IDrngroup by Company.IDrnrn--统计客户上次的证书数目(临时表主键:Company.ID)rndeclare @TempCertificate table(Companyid int,intcount int)rninsert into @TempCertificaternrnselect Company.ID ,count(Certify.ID)rnfrom Certifyrninner join CompanyrnONrnCertify.UserID=Company.UserIDrngroup by Company.IDrnrn--统计客户上传的视频个数(临时表主键:Company.ID)rndeclare @TempVideo table(Companyid int, intcount int)rninsert into @TempVideornrnselect Company.ID ,count(NVideo.ID)rnfrom NVideorninner join CompanyrnONrnNVideo.UserID=Company.UserIDrngroup by Company.IDrnrn--统计企业动态的个数(临时表主键:Company.ID)rndeclare @TempCoNews table(Companyid int ,intcount int)rninsert into @TempCoNewsrnrnselect Company.ID ,count(CoNews.ID)rnfrom CoNewsrninner join CompanyrnONrnCoNews.UserID=Company.UserIDrngroup by Company.IDrnrn----------------------------------------------------统计行数的临时表--------------------------------------------------------rnrnrnrndeclare @strSelect Nvarchar(1300)rndeclare @strFrom Nvarchar(1000)rnset @strSelect=''rnset @strFrom=''rnrnset @strSelect='Company.ID as Company_ID,Company.UserTag as Company_UserTag,rnCompany.UserID as Company_UserID,Company.CompanyName as Company_CompanyName,rnCompany.CompanyUser as Company_CompanyUser,Company.CompanyTel as Company_CompanyTel,rnCompany.Hits as Company_Hits,Role.RoleName as Role_RoleName,rnRole.RoleImg as Role_RoleImg,rn@TempSca.intcount as ScaCount,@TempJob.intcount as JobCount,rn@TempLeave.intcount as LeaveWordCount,@TempCertificate.intCount as CertifyCount,rn@TempVideo.intcount as NVideoCount,@TempCoNews.intcount as NCoNewsCountrnrn'rn/*rn关联表:rnCompany,User,City(父子表),CompanySort(父子表),6张临时统计行数的临时表rnrn*/rnset @strFrom='from Companyrninner join Userrnon Company.UserID=User.IDrninner join Rolernon User.UserType=Role.RoleIDrninner join Cityrnon Company.CityID=City.IDrninner join City as City_1rnon City_1.ID=City.OwnIDrninner join CompanySort rnon CompanySort.ID=Company.ProdSortIDrninner join CompanySort_1rnon CompanySort_1.ID=CompanySort.OwnIDrnrninner join @TempScarnon @TempSca.Companyid=Company.IDrnrninner join @TempLeavernon @TempLeave.Companyid=Company.IDrnrninner join @TempJobrnon @TempJob.Companyid=Company.IDrnrninner join @TempCertificaternon @TempCertificate.Companyid=Company.IDrnrninner join @TempVideornon @TempVideo.Companyid=Company.IDrn'rnrnif(@docount=1) rn exec('select count(Company.ID) '+@strFrom+' where 1=1 '+@strFilter) rn rnelse rn begin rnrn exec('rnrn declare @indextable table(id int identity(1,1),nid int)rn set rowcount '+@endIndex+'rn insert into @indextable(nid) rnselect Company.ID '+@strFrom+' where 1=1 '+@strFilter+' order by Company.ManageSort,Company.AddDate Descrnrnselect *rn '+@strFrom+' inner join @indextable t rn onrnCompany.ID=t.nid rnwhere t.id>='+@startIndex+' and t.id<='+@endIndex rnrn) rn rnrnend rnendrnset nocount offrnrnrn============================rn我分别在VS2005单步调试和SQL 2000查询分析器单步调试语法没错。但运行最后显示rn:必须声明变量 '@TempSca'。rn必须声明变量 '@TempSca'。rn也就是我临时用来各个表统计信息的临时表。未定义rn我猜想是SQL临时表没定义在同一批处理语句中,导致后面在变量中不能直接引用。可是不知道要怎么改。rn期待各位高手回答。我时式关注。rnrnrn
有关sql临时表的问题。
在一个存储过程中,我建立了一个临时表,rn在存储过程的最后,我删除了这个临时表。rn我的问题是,当很多用户调用这个存储过程的时候,rn我如果避免这个临时表的存在而出错?rn而且我也不能轻易删除他,因为这意味着,某个用户的运算还没有结束。
SQL 临时表应用问题。
select cj.nu,name,age,km,fen from cj,xx where xx.nu=cj.nu --编号,名字,年龄,科目,分数rn这是原本的查询语句。现在我想在这些列的后面加上一个分数的和。我用了临时表:rnrncreate table #crn(nu varchar(5) null,name varchar(15) null,age varchar(5) null,km varchar(15) null,fen decimal(3,1) null)rninsert into #c select cj.nu,name,age,km,fen from cj,xx where xx.nu=cj.nu group by cj.nu,name,age,km,fenrnselect * from #crndrop table #c --保存原本的查询。rnrncreate table #arn(nu varchar(5) null,name varchar(15) null,age varchar(5) null,km varchar(15) null,fen decimal(3,1) null,sun decimal(4,1) null)rninsert into #a select nu,name,age,km,fen ,sum(isnull(fen,0))from #c group by nu,name,age,km,fenrnselect * from #arndrop table #a --增加分数总和列rnrn可就出来的结果并没有对分数进行求和,那个sun(fen)的数据和fen的数据是一样的,求解。
sql临时表问题 急
SET ANSI_NULLS ON --对空值做等于或不等于的判断时 都会返回FalsernGOrnSET QUOTED_IDENTIFIER OFF --所有标识符都得符合命名规范rnGOrnALTER TRIGGER [dbo].[trg_HM_Employees_InsUptDel] ON [dbo].[ORG_Company] rn INSTEAD OF INSERT,UPDATE rn AS rn Beginrn BEGIN TRANSACTIONrn SET NOCOUNT ONrn DECLARE @ERROR INT,rn @fitemid intrn SET @error = 0rn IF NOT EXISTS(SELECT 1 FROM Inserted)rn BEGINrn --向t_Item 插入数据rn INSERT INTO t_Item (FItemClassID,FNumber,FParentID ,FLevel,FDetail,FName,FFullNumber,FDeleted,rn FShortNumber,UUID) rn select 2, K3Unitcode,0,1,1,Name,K3Unitcode,0,K3Unitcode,id rn from Insertedrn set @error = @error+@@errorrn end rn endrn gornrnrn报错 临时表中的 K3Unitcode,Name 无效 要怎么处理
关于SQL的临时表问题
我要用一个存储过程建立一个临时表,是不是在我存储过程调用结束后临时表就会被删了?不管是局部的还是全局的都会吗?rnrn如果会的话,那我想多次调用这个会建立临时表的存储过程把多组数据存到这个临时表里有什么办法吗?rnrn求高手解答
SQL SERVER临时表的问题
为防止多用户同时访问一个界面,想利用系统临时表做这个功能,rn我在数据库上做了个存储过程rnrncreate PROCEDURE [dbo].[sd_霸占大厅]rn(rn@caozuoyuan nvarchar(10)rn)rnASrnBEGINrn set nocount on rn set ansi_warnings offrn if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##bzdt')) rn select czy from ##bzdtrn ELSErn begin rn create table ##bzdtrn (rn czy varchar(10) rn )rn insert ##bzdt rn select @caozuoyuan as czy rn select '' as czyrn rn endrnENDrn当用户在客户端打开指定窗体时调用这个存储过程,如果返回一个大于0长度的字符,则说明有人在使用指定界面,就关闭窗体。(客户端connection对象是一个窗体级别的变量,窗体加载时打开连接,窗体关闭时关闭连接。)rn但在实际使用时发现,如果一个用户进入指定界面,另一个用户再打开窗体进入这个界面的时候,第一个有效,可以获取到有人在使用该界面,并自动关闭窗体。但当第二次再打开该窗体时,就获取不到##bzdt临时表了。经过试验发现,当第一个用户调用该存储过程后,数据库会生成一个##bzdt临时表,如果该用户不关闭界面,则该临时表一直存在,但一旦有其他用户调用该存储过程后,即便第一个用户没有关闭界面,则##bzdt临时表也不再存在了。和我想要的结果不一样。请大神帮忙分析是怎么回事。
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview