■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#353-0Oracle SQLでかなり困ってますVB-MAN2001-07-16(月) 13:51
     #354-0RE#353:Oracle SQLでかなり困ってますだい2001-07-16(月) 14:32
     #355-0RE#353:Oracle SQLでかなり困ってます匿名3552001-07-16(月) 14:38
     #357-0RE#354:Oracle SQLでかなり困ってますVB-MAN2001-07-17(火) 09:00
     #358-0RE#357:Oracle SQLでかなり困ってますよねKEN2001-07-17(火) 09:33
#353-0
Oracle SQLでかなり困ってます
どうも始めまして、今データベースの更新でかなり苦しんでます。
内容は、3つの表を連結し、条件に該当した複数のデータを"0000"で更新するという部分のSQLなのですがどうしてもうまくいきません。(T_T)
UPDATE文は複数の表ではつかえないし・・・・。
今の現状のソースです。
******************************************************************************************Public Function gfncFilenew() As geRtn
    
    Dim strSql  As String
    Dim objDs   As Object

    On Error GoTo ErrProc
    gfncFilenew = geRtn.NG
    
    Set objDs = Nothing
    
    strSql = "CREATE VIEW TYUSYUTU (INM_JIMU_CD,"
    strSql = strSql & "INM_CHOTEI_NENDO,"
    strSql = strSql & "INM_CHOTEI_YMD,"
    strSql = strSql & "INM_KYOKA_YMD_TOSHO,"
    strSql = strSql & "IBM_SHIYORYO_CD)"
    strSql = strSql & " AS SELECT INM_CHOTEI_NENDO,"
    strSql = strSql & "INM_CHOTEI_YMD,"
    strSql = strSql & "INM_JIMU_CD"
    strSql = strSql & " FROM GI_NAIYOM,GI_BUKENM,GI_LINKM"
    strSql = strSql & " WHERE GI_NAIYOM.INM_JIMU_CD = GI_BUKENM.IBM_JIMU_CD"
    strSql = strSql & " AND GI_NAIYOM.INM_JIMU_CD = GI_LINKM.ILM_JIMU_CD"
    
    Set objDs = gobjDb.CreateDynaset(strSql, 0&)

    'データ存在ェック
    If objDs.EOF Then
        gfncFilenew = geRtn.OK
        Exit Function
    End If

strSql = "UPDATE TYUSYUTU"
    strSql = strSql & " SET INM_CHOTEI_NENDO = '0000',INM_CHOTEI_YMD = '0000'"
    strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_NENDO = " & mstrNendo
    strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_YMD = " & mstrChoteiMD
    strSql = strSql & " AND GI_NAIYOM.INM_KYOKA_YMD_TOSHO < '19970401'"
    strSql = strSql & " AND IBM_SHIYORYO_CD BETWEEN '000' AND '099'"

    gobjDb.ExecuteSQL strSql

    gfncFilenew = geRtn.OK
    Exit Function
    
ErrProc:
    gfncFilenew = geRtn.Cancel

End Function
******************************************************************************************
というのでエラーでとまってます。
SELECT文で連結し条件の列を選択して、それをCREATE VIEWでTYUSYUTU(仮想表)にしてからUPDATEしているのですがエラーになってしまいます。
誰か助けてください。
#354-0
RE#353:Oracle SQLでかなり困ってます
> UPDATE文は複数の表ではつかえないし・・・・。

複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、
ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。
もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。

#355-0
RE#353:Oracle SQLでかなり困ってます
> strSql = "UPDATE TYUSYUTU"
>     strSql = strSql & " SET INM_CHOTEI_NENDO = '0000',INM_CHOTEI_YMD = '0000'"
>     strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_NENDO = " & mstrNendo
>     strSql = strSql & " AND GI_NAIYOM.INM_CHOTEI_YMD = " & mstrChoteiMD
>     strSql = strSql & " AND GI_NAIYOM.INM_KYOKA_YMD_TOSHO < '19970401'"
>     strSql = strSql & " AND IBM_SHIYORYO_CD BETWEEN '000' AND '099'"

ひょっとしてWHERE句が抜けてるだけでは?(ANDはあるけど…)
#357-0
RE#354:Oracle SQLでかなり困ってます
> > UPDATE文は複数の表ではつかえないし・・・・。
> 
> 複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、
> ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。
> もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。
>
返信ありがとう♪ 
トランザクション処理ですか・・・すいません勉強不足でトランザクションの意味がわかりません簡単に
どういう処理なのかおしえていただけないでしょうか?後は本買ってがんばってみようと思います。
#358-0
RE#357:Oracle SQLでかなり困ってます
> > > UPDATE文は複数の表ではつかえないし・・・・。
> > 
> > 複数テーブルからなるビューを更新可能かどうかはそのDBMSに依存しますが、もし更新不可であれば、
> > ビューの元になっているそれぞれの表に対して、UPDATE文を発行してあげればよいかと思われます。
> > もちろん、片方だけ更新されたり等の不整合を避けるために、トランザクション処理を行います。
> >
> 返信ありがとう♪ 
> トランザクション処理ですか・・・すいません勉強不足でトランザクションの意味がわかりません簡単に
> どういう処理なのかおしえていただけないでしょうか?後は本買ってがんばってみようと思います。

よくあるたとえですが、
銀行のATMでお金を引き出すとして、3万円引き出した場合、

・センターの情報を3万円引き出したことにします。
・ATMから3万円払い出されます。

この一連の流れの中で、
・センターの情報は3万円引いて更新されたけど、ATMからはお金は払い出されなかった。
・センターの情報は更新されなかったけど(お金は減っていない!)、ATMからはお金は払い出された。
のような状態になっては困ります。

こんなとき、
・センターの情報が更新され、ATMからも現金が支払われた→成功
・センターの情報が更新されず、ATMからも現金が支払われない→失敗
の2つの状態のどちらかにしかならないようにしないといけません。

この関連のある処理は全体として、1つの処理として扱うことにします。
これがトランザクション処理です。

メソッドでいうとBeginTrans(トランザクション処理を始めます)、
CommitTrans(成功)、Rollback(失敗)になります。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)