Microsoft SQL-Server Procedure aufrufen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Microsoft SQL-Server Procedure aufrufen

Beitrag von mk-soft »

Hi,

wie kann ich mit ODBC (PB) eine Procedure aufrufen und den Return_Value abfragen.

{? = call dbo.procname()} geht nicht :cry:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von Kiffi »

ein einfaches

Code: Alles auswählen

{call procname}
reicht aus.

und dann ganz normal mit NextDatabaseRow() und GetDatabase*() die Rückgabe auswerten

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von mk-soft »

Bekomme so keinen fehler, aber wird kein ergebnis zurück geliefert.

Auszug:

Code: Alles auswählen

  If recid = 0
      sql = "{Call dbo.qp_Add_Langtexte}"
      If DatabaseQuery(#Datenbank, sql)
        While NextDatabaseRow(#Datenbank)
          temp.s = GetDatabaseString(#Datenbank, 0)
          WriteLog(temp)
          
        Wend
      Else
        WriteLog(DatabaseError())
      EndIf
    EndIf 
Die Procedure sollte einen neuen Datensatz anlegen und die recid liefern. Die Procedure ist nicht von mir

Code: Alles auswählen

      sql = "Declare @return_value int;"
      sql + "EXEC	@return_value = [dbo].[qp_Add_Langtexte]; "
      sql + "Select	'Return Value' = @return_value; "
legt auch ein Datensatz an. Liefert allerding auch kein ergebnis :cry:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von Kiffi »

mk-soft hat geschrieben:Liefert allerding auch kein ergebnis :cry:
hast Du die SP testweise mal im Query Analyzer ausprobiert?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von mk-soft »

Unter den SQL-Management Studio Express die Procedure geteset und bekomme eine neue RecID zurück

P.S. Es scheint das die letzte Zeile "Select ..." nicht mehr ausgeführt wird
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
PBFetischist
Beiträge: 55
Registriert: 26.10.2004 19:42

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von PBFetischist »

Hallo mk-soft,

warum rufst du mit call auf und nicht mit exec ?

Code: Alles auswählen

create procedure sp_TabellenAnzeigen
as
SELECT * FROM INFORMATION_SCHEMA.TABLES;
Einmal diese Prozedur anlegen und aus PB aufrufen:

Code: Alles auswählen

UseODBCDatabase()
If opendatabase(0, "dsn", "user", "pass")
  query.s = "exec sp_TabellenAnzeigen"
  If DatabaseQuery(0, query)
    While NextDatabaseRow(0)
      Debug GetDatabaseString(0, 0)
    Wend
  Else
    Debug DatabaseError()
  EndIf
EndIf
Oder geht es nicht um gespeicherte Prozeduren ?
PB 4.30 auf Windows Vista / XP SP2 und Linux
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von Kiffi »

PBFetischist hat geschrieben:warum rufst du mit call auf und nicht mit exec ?
ob call oder exec sollte Jacke wie Hose sein. Ich meine gelesen zu haben,
dass call performanter sein soll.
PBFetischist hat geschrieben:Oder geht es nicht um gespeicherte Prozeduren ?
doch, darum geht's. Procedure = SP = Stored Procedure = Gespeicherte Prozedur :-)

@Michael:
mk-soft hat geschrieben:legt auch ein Datensatz an. Liefert allerding auch kein ergebnis
also kann man grundsätzlich davon ausgehen, dass Du die richtige SP aufrufst.
Lediglich das Ergebnis fehlt. Mal ganz schräg überlegt: Kann es ein Unicode-Problem
sein? Die SP gibt eine Zahl zurück; Du liest einen String aus. Nicht, dass es daran liegt.

Grüße ... Kiffi
a²+b²=mc²
PBFetischist
Beiträge: 55
Registriert: 26.10.2004 19:42

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von PBFetischist »

@Kiffi
ob call oder exec sollte Jacke wie Hose sein. Ich meine gelesen zu haben,
dass call performanter sein soll.
call funktioniert auf einem SQL Server 2005 nicht, ausser einer Fehlermeldung kommt nüscht:

Die gespeicherte Prozedur 'call' wurde nicht gefunden.

ODBC meldet dann übrigens:

[Microsoft][ODBC SQL Server Driver][SQL Server]Die gespeicherte Prozedur 'call' wurde nicht gefunden.

11:55 Uhr

Ich habe mir jetzt eine sp mit einem insert und einer Ausgabe danach gebaut und in der Tat, es funktioniert nicht :-(
Das erste Statement wird ausgeführt, ausgegeben wird leider nichts.
PB 4.30 auf Windows Vista / XP SP2 und Linux
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von Kiffi »

PBFetischist hat geschrieben:call funktioniert auf einem SQL Server 2005 nicht
doch, doch, das geht wunderbar:

Code: Alles auswählen

UseODBCDatabase()

DB = OpenDatabase(#PB_Any, "myDatabase", "myUser", "myPass")

If DB
  
  If DatabaseQuery(DB, "{call dbo.testtest}")
    While NextDatabaseRow(DB)
      Debug GetDatabaseString(DB, 0) ; <- liefert korrekte Werte
    Wend
  Else
    Debug DatabaseError()
  EndIf
  
  CloseDatabase(DB)
  
EndIf
PBFetischist hat geschrieben:Ich habe mir jetzt eine sp mit einem insert und einer Ausgabe danach gebaut und in der Tat, es funktioniert nicht
Bingo. Bei mir funktioniert es nach einfügen des Inserts nun auch nicht mehr. :?

Grüße ... Kiffi
a²+b²=mc²
PBFetischist
Beiträge: 55
Registriert: 26.10.2004 19:42

Re: Microsoft SQL-Server Procedure aufrufen

Beitrag von PBFetischist »

@Kiffi

Was hast du für eine SQL Server Version ?

Verschachtelt geht es leider auch nicht... (sp x triggert sp y) Hmmm.

Jetzt fällt mir nichts mehr ein.
PB 4.30 auf Windows Vista / XP SP2 und Linux
Antworten