2010-12-03 34 views
0

Je suis nouveau sur VB.net. J'ai besoin de modifier une application existante qui se connecte à une base de données Oracle.Insérer la valeur générée par la séquence Oracle à l'aide de vb.net

Ma question est: Comment puis-je insérer une valeur générée par une séquence d'oracle à partir de vb? Je le code suivant à ce jour:

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 

Mais je reçois une erreur parce que j'ai un autre champ, ROWSTAMP, qui est généré par une séquence?

Veuillez nous consulter.

Cordialement, Radu.

Répondre

0

Dans Oracle, les colonnes ne sont pas "générées par une séquence". Vous devez récupérer la valeur suivante à partir d'une séquence vous-même, et fournir cette valeur lorsque vous insérez la ligne:

 
SELECT mysequence.nextval 
    INTO some_variable 
FROM dual; 

Ensuite, utilisez la valeur de une_variable dans votre déclaration d'insertion.

+0

Je sais que cela. Mais j'ai besoin du code vb.net pour insérer des valeurs dans la table en utilisant la séquence. –

+0

Vous ne pouvez donc pas exécuter cette requête depuis VB.net et utiliser la valeur retournée dans votre code VB? –

0

Vous pouvez créer un déclencheur "avant insertion", qui remplit la colonne rowstamp avec la valeur suivante d'une séquence. Je n'aime pas cette stratégie moi-même, mais il est une option.

Il est un exemple de la façon de le faire here