PL/SQL Prozedur aufrufen aus VB

Hallo,

wie kann ich eine Prozedur aus Visual Basic aufrufen die
im SQL*PLus mit:

exec (in1, in2, in3, :out1, :out2)

aufgerufen wird und dort auch funktioniert?

SO ungefähr hatte ich mir das gedacht:
db.executeSQL („exec (’“&in1&"’,’"&in2&"’, ‚"&in3&"‘, :out1, :out2)")

Ein normales SQL-Statement, wie UPDATE funktioniert.

db.executeSQL („UPDATE SET …“)

Im voraus vielen Dank.

Gruß Chris

SO ungefähr hatte ich mir das gedacht:
db.executeSQL („exec
(’“&in1&"’,’"&in2&"’, ‚"&in3&"‘, :out1, :out2)")

erstens, was ist die fehlermeldung?
hast du es mal ohne das exec probiert, wenn du in einem pl-sql block eine stored procedure aufrufst, brauchst du es ja auch nicht…
bist du dir sicher, dass die lustige parameteruebergabe mit den & zeichen so stimmt?
koennte natuerlich sein, dass db.executeSQL genau dies bedeutet, naemlich sql und kein pl-sql…

joachim, der sich mit vb nicht auskennt

Wenn Du mit ADO arbeitetest, dann mußt Du das Command-Object benutzen. Hier ein kleines Beispiel zum Aufruf einer Stored Procedure eines SQL-Server mit 2 Input und einer Outputvariable:

Private Sub Command1\_Click()

 Dim adoCnn As New ADODB.Connection
 Dim adoCmd As New ADODB.Command

 adoCnn.Open "DSN=test"

 With adoCmd
 .ActiveConnection = adoCnn
 .CommandType = adCmdStoredProc
 .CommandText = "sp\_makefilename"
 'input var
 .Parameters(1).Value = "PRE"
 .Parameters(2).Value = "BAK"
 .Execute
 'output var
 Debug.Print .Parameters(3).Value
 End With

 Set adoCmd = Nothing
 adoCnn.Close
 Set adoCnn = Nothing

End Sub

Je nach Rückgabetyp kannst Du auch ein Recordset damit befüllen:

Set adoRecordSet = adoCommand.Execute

Oder auch jeden einzelnen Paramter über das Parameter-Object erstellen, anhängen etc. Sieh Dir die Details am besten in der MSDN an.

VG, Stefan

Hallo Chris,
probier doch mal das.

Dim db as Database
Dim sqltext as string

Set db = CurrentDb 'funzt nur wenn DB schon geöffnet ist

jetzt kannst du entweder direkt;

db.Execute („SQL statement“)

oder

sqltest = „SQL statement“
db.Execute (sqltext)

jedes beliebige SQL-Statement ausführen.