2010-12-03 3 views
0

私はVB.netを初めて使用しています。私は、Oracleデータベースに接続する既存のアプリケーションを変更する必要があります。vb.netを使用してoracleシーケンス生成値を挿入します。

私の質問は次のとおりです。vbからのoracleシーケンスによって生成された値を挿入するにはどうすればよいですか? は、私がこれまでに次のコードを持っている:

Dim mpData As New MaximoDataSetTableAdapters.MEASUREPOINTTableAdapter 
Dim mpTable As New MaximoDataSet.MEASUREPOINTDataTable 
mpData.Fill(mpTable) 

Dim mData As New MaximoDataSetTableAdapters.MEASUREMENTTableAdapter 
Dim mTable As New MaximoDataSet.MEASUREMENTDataTable 

Dim mpRow As MaximoDataSet.MEASUREPOINTRow 
For Each mpRow In mpTable 

    Dim mRow As MaximoDataSet.MEASUREMENTRow 
    mRow = mTable.NewRow() 
    mRow.POINTNUM = mpRow.POINTNUM 
    mRow.MEASUREDATE = CStr(Now) 
    mRow.MEASUREMENTVALUE = tTotal 
    mTable.Rows.Add(mRow) 
    mData.Update(mTable) 

next 

をしかし、私は、シーケンスによって生成される他のフィールド、ROWSTAMPを持っているので、私はエラーが発生しますか?

アドバイスをしてください。

よろしくお願いします。 Radu。

答えて

0

Oracleの列は「シーケンスによって生成されません」。

 
SELECT mysequence.nextval 
    INTO some_variable 
FROM dual; 

は、その後、あなたのINSERT文でsome_variableからの値を使用する:あなたが行を挿入するときは、シーケンス、自分から次の値を取得し、この値を指定する必要があります。

+0

私はこれを知っています。しかし、シーケンスを使用してテーブルに値を挿入するには、vb.netコードが必要です。 –

+0

VB.net内からこのクエリを実行することはできず、VBコードで返された値を使用できますか? –

0

トリガを挿入する前にトリガを作成すると、シーケンスの次の値で行スタンプ列が設定されます。私はこの戦略が自分で好きではないが、それはの1つのオプションです。

このようにする方法の例があります。here