Keine Resultate bei Stored Proecdure
Verfasst: 10. November 2006 14:07
Hallo Zusammen,
ich bin ziemlich neu in QT wie auch bei Datenbanken. Ich weiß auch nicht ob ich die Frage hier an der richtigen Stelle frage, aber ich versuche es einfach mal. Vielleicht hat ja jemand Erfahrung damit.
Ich benutze QT 4.2.0 Open Source mit dem MinGW g++ und MS SQL Server 2000 über QODBC.
Ich habe folgendes Problem:
Ich rufe eine Stored Procedure auf, die ein INSERT auf eine Tabelle macht und anschließend den kompletten Datensatz mit einer SELECT Anweisung wieder zurückliefert.
Der Aufruf und das INSERT funktionieren, aber leider bekomme ich keine Resultate von dem SELECT Statemant zurück.
Code Aufbau:
QT
SQL
Lasse ich alles vor dem SELECT weg und frage alle Zeilen ab, bekomme ich alle Zeilen ohne Problem zurück geliefert. Jedoch sobald irgendetwas vor dem SELECT steht, es reicht schon "DECLARE @ID int;", bekomme ich keine Ergebnisse mehr.
SQL
GEHT
GEHT NICHT MEHR
Das, was ich dabei nicht verstehe ist, dass wenn ich alle Prozeduren aus dem Query Analyzer des SQL Server ausführen, funktionieren sie wie sie sollen.
Vielleicht kann mir da jemand helfen.
Danke.
Gruß,
Stefan
ich bin ziemlich neu in QT wie auch bei Datenbanken. Ich weiß auch nicht ob ich die Frage hier an der richtigen Stelle frage, aber ich versuche es einfach mal. Vielleicht hat ja jemand Erfahrung damit.
Ich benutze QT 4.2.0 Open Source mit dem MinGW g++ und MS SQL Server 2000 über QODBC.
Ich habe folgendes Problem:
Ich rufe eine Stored Procedure auf, die ein INSERT auf eine Tabelle macht und anschließend den kompletten Datensatz mit einer SELECT Anweisung wieder zurückliefert.
Der Aufruf und das INSERT funktionieren, aber leider bekomme ich keine Resultate von dem SELECT Statemant zurück.
Code Aufbau:
QT
Code: Alles auswählen
QSqlQuery q(m_db);
q.prepare("{ CALL Function (?, ?, ?) }");
q.bindValue( 0, row.Name);
q.bindValue( 1, row.X);
q.bindValue( 2, row.Y);
if(!q.exec()){
return false;
}
while ( q.next() ){
row.Id = q.value( 0);
}
return true;Code: Alles auswählen
CREATE PROCEDURE [dbo].[Function]
(
@Name nvarchar (50) = NULL,
@X int,
@Y int
) AS
DECLARE @ID int;
INSERT INTO dbo.Table(Name, X, Y)
VALUES (@Name, @X, @Y)
SET @ID=SCOPE_IDENTITY()
SELECT ID, Name, X, Y
FROM dbo.Table
WHERE ID = @ID
GOSQL
GEHT
Code: Alles auswählen
CREATE PROCEDURE [dbo].[Function]
(
@Name nvarchar (50) = NULL,
@X int,
@Y int
) AS
SELECT ID, Name, X, Y
FROM dbo.Table
GOCode: Alles auswählen
CREATE PROCEDURE [dbo].[Function]
(
@Name nvarchar (50) = NULL,
@X int,
@Y int
) AS
DECLARE @ID int;
SELECT ID, Name, X, Y
FROM dbo.Table
GOVielleicht kann mir da jemand helfen.
Danke.
Gruß,
Stefan