Hej Ändra till: Nä, jag får inte det att fungera heller. Jag får felmeddelande om jag ädrar till InputOutput. Annars är resultatet en tom ut-variabel och ett normalt recordset... Har du testat med den nedre varianten på proceduren? Såg att jag glömt deklarera @antal i den, men det upptäckte du säkert själv. Ja, jag har testat den. Jag får ett recordset, men ut-variabeln är tom.Returnera både recordset och output variabel
Returnera ett recordset från en Stored Procedure samtidigt som man också returnerar ett värde i en output variabel?
Jag har försökt med detta - får inget felmeddelande, men antingen är recordsetet tomt eller så är variabeln tom.
Så här ser min vb-kod ut:
With com
.CommandType = adCmdStoredProc
.CommandText = "sp_test"
.ActiveConnection = cn
.Parameters.Append .CreateParameter("id", adBSTR, adParamInput, 25, "xxx")
.Parameters.Append .CreateParameter("antal", adBigInt, adParamOutput)
Set rs =.Execute
Debug.Print "Antal: " & com.Parameters("antal")
Debug.Print rs.GetString
End With
och så här ser sp'n ut:
CREATE PROCEDURE dbo.sp_test
@id varchar(25), @antal int OUTPUT
AS
SELECT @antal = COUNT(*) FROM tabell1 WHERE fk = @id
SELECT * FROM tabell2 WHERE pk = @id
RETURN
Någon?Sv: Returnera både recordset och output variabel
CREATE PROCEDURE dbo.sp_test
@id varchar(25), @antal int OUTPUT
AS
SET NOCOUNT ON
SELECT @antal = COUNT(*) FROM tabell1 WHERE fk = @id
SET NOCOUNT OFF
SELECT * FROM tabell2 WHERE pk = @id
RETURN
Om inte det räcker, testa ändra utparametern till en adInputOutputParameter, alternativt ändra proceduren till följande:
CREATE PROCEDURE dbo.sp_test
@id varchar(25)
AS
SET NOCOUNT ON
SELECT @antal = COUNT(*) FROM tabell1 WHERE fk = @id
SET NOCOUNT OFF
SELECT * FROM tabell2 WHERE pk = @id
RETURN @antalSv: Returnera både recordset och output variabel
Sv: Returnera både recordset och output variabel
Sv: Returnera både recordset och output variabel