全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:987
推到 Plurk!
推到 Facebook!

关于oracle 9i

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-25 14:40:16 IP:218.20.xxx.xxx 未訂閱
各位前辈: 本人首次使用oracle 9i作为数据库,与delphi7开发程序。 现在需要修改数据库中某一个table的值,由于在该table中存在着相同的记录,如果修改某条记录需要知道该记录的sequence no.避免影响到其他相同的记录,但是我发现在oracle 9i 的table中没有像bde table中的sequence no,应该怎么办? 请指教,谢谢!
sanhang
一般會員


發表:12
回覆:25
積分:17
註冊:2002-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-25 16:26:47 IP:61.222.xxx.xxx 未訂閱
如果要取得該Table中唯一的紀錄值則用 Select ColA, Rowid from TableA Where ColA='XXX123' 如果ColA有重複的值 ColA ROWID XXX123 AAAA3QAALAAAUFhAAD XXX123 AAAA3QAALAAAUFhAAA 你可以用ROWID來Update你要的紀錄
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-25 16:57:00 IP:218.19.xxx.xxx 未訂閱
hi,sanhang 我不是很明白你的意思,能具体一点吗? 比如说现在table1中: aaa bbb ccc ddd aaa bbb ccc ddd .... 你可以看到前两条记录是完全一样的,那么我怎么选定第一条修改而不影响到第二条记录呢? 顺便问一下,假设现在这个表名是oracle9i中“EMGT”."SALES_ENTRY",SQL 具体怎么书写?谢谢!
sanhang
一般會員


發表:12
回覆:25
積分:17
註冊:2002-08-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-25 18:54:38 IP:61.222.xxx.xxx 未訂閱
 
先取得ROWID
SELECT R.*, ROWID FROM EMGT R
WHERE ColA = 'AAA'    假設取出來的值為    ColA  ColB  ColC  ColD   ROWID
aaa   bbb   ccc   ddd    AAAA3QAALAAAUFhAAD
aaa   bbb   ccc   ddd    AAAA3QAALAAAUFhAAA    假設你要修改第一筆紀錄    UPDATE EMGT
SET ColA='eee',
    ColB='fff',
    ColC='ggg',
    ColD='hhh'
WHERE ROWID = 'AAAA3QAALAAAUFhAAD'    結果為    ColA  ColB  ColC  ColD   ROWID
eee   fff   ggg   hhh    AAAA3QAALAAAUFhAAD
aaa   bbb   ccc   ddd    AAAA3QAALAAAUFhAAA 
發表人 - sanhang 於 2005/03/25 18:56:13
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-29 09:36:31 IP:218.19.xxx.xxx 未訂閱
我想请教一下,在oracle9i 中的“过程”里面建立一个过程后使用select 语句时,必须使用以下这样的格式吗? 比如说:select name into A from... 语句里面必须要有...into X...,直接使用select name from...可不可以? 由于我要将“过程”中select之后 的数据传送到delphi7中,之前数据是一条所以使用select ...into... 如果数据结果多于一条,要怎样处理?
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-31 21:17:15 IP:211.74.xxx.xxx 未訂閱
補充一下好了 1.基本上會修改到有重複紀錄的table,表示你的table需要有primary key.   這樣邏輯上才有意義可言 2.如果想要將重複的資料刪除到剩下一筆,可執行一段SQL   []內表示你的table and columns,其餘皆是合法sql
delete from [yourtable]
  where rowid in ( select rid
                     from ( select rowid rid,
                                   row_number() over 
                                          ( partition by [col1,co12..col3] order by rowid ) rn
                              from  [yourtable]
                           )
                    where rn > 1 )
3.stored procedure中是用PL/SQL,不是SQL,所以要用select into X... 將select的值指派給變數X,另外你想要傳回不只一列的資料,是指要傳回 result set嗎? 如果是參考http://bdn.borland.com/article/0,1410,28616,00.html Getting a result set from an Oracle stored procedure in Delphi 星期一,星期二...星期日..星期一..無窮迴圈@@ 發表人 - pgdennis 於 2005/03/31 21:27:06
------
星期一,二...無窮迴圈@@
系統時間:2024-06-27 3:21:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!