作者weinine32 (孤僻寂寞)
看板Database
标题[问题]Asp.net读Oracle的问题
时间Sat May 31 23:33:36 2008
*********
以下是我建立临时资料表的指令
CREATE GLOBAL TEMPORARY TABLE START
{
S1 NUMBER,
S2 NUMBER
}
我用Oracle SQL Developer 测试结果是
不同的人同时连线进去 资料表存在, 但资料会是空的
Insert进去後的资料 只有自已看得到,结束连线後,
再回去後,也会是空的
********
最近在写一个支程式
当使用者输入 起迄点的座标後
就会依照使用者输入的起迄点座标
把起点50公尺内有什麽公车站牌,Insert到 START 这个临时资料表
把迄点50公尺内有什麽公车站牌,Insert到 END 这个临时资料表
然後再做Select 把临时资料表内的资料捞出来
Begin
Insert Into START select 站牌名称 FROM 站牌资料表;
Insert Into END select 站牌名称 FROM 站牌资料表;
End;
Select * From Start, END
但是我发现 BEGIN 和 SELECT 无法同时执行,
也就是说要先执行 Begin end; 再执行 Select 才行
当我把它写入 ASP.NET 用DataReader 执行这二段要分开写,写在一起会出错
**********以下程式出错***********
string SQL1 = "Begin (略) END; Select * From START, END ";
OracleCommand cmd1 = new OracleCommand(SQL1, conn);
OracleDataReader objRead = cmd1.ExecuteReader();
**********以上程式出错**************
*********以下程式可以正常执行**********
string SQL1 = "Begin (略) END;"
OracleCommand cmd1 = new OracleCommand(SQL1, conn);
cmd1.ExecuteNonQuery();
string SQL2 = "Select * from START, END ";
cmd1.CommandText=orstrSQL2;
OracleDataReader objRead = cmd1.ExecuteReader();
虽然可以正常执行 但已经被Oracle试做二次连线
无法Select到 SQL1的执行结果
但我的OracleConnection 和 OracleCommad 是同一个物件了阿
***************************************
这问题困扰了很久 希望有人可以为我解答
无以回报 只有我少少的 5000P币
回应一楼: 我认为解决的方法有二方面,一是改SQL码一是改ADO.NET
所以才会贴在这里,想问问我的指令是否有问题
是否有 Begin後还可以直接SELECT的方法,我试过MS-SQL他是可行的
回应二楼: COMMIT;只是结束交易,和我的问题关系因应不大吧?
我主要是希望Insert资料到临时资料表後,又能Select出来
多谢二位的回应
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.31.170
1F:推 PsMonkey:你这问题去 ASP.net 相关讨论区比较恰当 05/31 23:37
2F:推 lynyq: 你用SQL Developer执行完好像还要下 commit; 05/31 23:47
※ 编辑: weinine32 来自: 59.104.31.170 (06/01 00:05)
3F:推 ynchang:你可以试着写Oracle的Stored Procedure 06/01 15:10
4F:推 shoting:TEMPORARY好像是对Session的吧...MySQL是这样Oracle不确定 06/04 13:17