Avatar billede hnteknik Novice
16. oktober 2004 - 18:56 Der er 11 kommentarer og
1 løsning

Hvordan fange returværdi på en slette SP

Jeg har en SP som nedenfor. jeg vil gerne fange hvor mange proceduren har slettet. Hvad er det for en værdi, som jeg skal angive i en return. I'm New to SP

Henrik

CREATE PROCEDURE [DBO].[SLETGMLOGFEJLLOG] AS
DELETE FROM dbo.logind
WHERE    (datoogtid < { fn NOW() } - 14) OR
                      (Fejl = 1)
GO
Avatar billede ldanielsen Nybegynder
16. oktober 2004 - 19:45 #1
Mener at den hedder @@ROWSAFFECTED, øjeblik ...
Avatar billede ldanielsen Nybegynder
16. oktober 2004 - 19:50 #2
@@ROWCOUNT hedder den.

CREATE PROCEDURE [DBO].[SLETGMLOGFEJLLOG] @Count int OUTPUT AS
DELETE FROM dbo.logind
WHERE    (datoogtid < { fn NOW() } - 14) OR
                      (Fejl = 1)
SET @Count = @@ROWCOUNT
GO
Avatar billede hnteknik Novice
16. oktober 2004 - 20:23 #3
Takker og bukker
Smider du et svar
Avatar billede ldanielsen Nybegynder
16. oktober 2004 - 21:22 #4
Ja, værsgo'
Avatar billede hnteknik Novice
16. oktober 2004 - 21:27 #5
Måske kan du hjælpe mig en bitte smule mer ?
SP kører men output er 'undefined'.
Jeg har prøvet alt fra cmd("Count").value ja til ...
Kan du spotte fejlen ?

Henrik


<%
//---- CommandTypeEnum Values ----
var con = Server.CreateObject("ADODB.Connection");
var cmd = Server.CreateObject("ADODB.Command");

try
{
    con.Open(db);
   
    cmd.ActiveConnection = con;
    cmd.CommandText = "SLETGMLOGFEJLLOG";
    cmd.CommandType = adCmdStoredProc;

    //prmAntalDeleted = Server.CreateObject("ADODB.Parameter");
    //prmAntalDeleted.Type = adInteger;
    //prmAntalDeleted.Size = 4;
    //prmAntalDeleted.Direction = adParamOutput;
   
    //cmd.Parameters.Append(prmAntalDeleted);
    cmd.Parameters.Append(cmd.CreateParameter("Count", adInteger, adParamOutput,4));

    cmd.Execute;
    Response.Write("Der blev slettet : "  + cmd(0));
}
catch (e)
{
    Response.Write(e.message);
}
finally
{
    // clean up

    if (con.State == adStateOpen)
        con.Close;
    con = null;
}

%>
Avatar billede hnteknik Novice
16. oktober 2004 - 21:29 #6
Måske skulle jeg prøve en Return(@@ROWCOUNT) ???
Avatar billede ldanielsen Nybegynder
17. oktober 2004 - 12:09 #7
nej, sådan er det i hvert fald ikke

cmd.Parameters.Append(cmd.CreateParameter("@Count", adInteger, adParamOutput,4));

Med @, skulle jeg mene
Avatar billede hnteknik Novice
17. oktober 2004 - 12:49 #8
Hm - det her rider mig som en lille mare. Jeg har også prøvet med @ og nu også med en ren return ????? !!! --> 'Der blev slettet : undefined' :

CREATE PROCEDURE [DBO].[SLETGMLOGFEJLLOG]
AS
    Declare @Count INT
    DELETE FROM dbo.logind
    WHERE    (datoogtid < { fn NOW() } - 14) OR
                        (Fejl = 1)
    SET @Count =@@ROWCOUNT
    return( @Count)
GO


<%
var con = Server.CreateObject("ADODB.Connection");
var cmd = Server.CreateObject("ADODB.Command");

try
{
    con.Open(db);
   
    cmd.ActiveConnection = con;
    cmd.CommandText = "SLETGMLOGFEJLLOG";
    cmd.CommandType = adCmdStoredProc;

    var prmAntalDeleted = Server.CreateObject("ADODB.Parameter");
    prmAntalDeleted.Name = "return";
    prmAntalDeleted.Type = adInteger;
    prmAntalDeleted.Size = 4;
    prmAntalDeleted.Direction = adParamReturnValue;
   
    cmd.Parameters.Append(prmAntalDeleted);
    //cmd.Parameters.Append(cmd.CreateParameter("return", adInteger, adParamReturnValue, 4));

    cmd.Execute;
    Response.Write("Der blev slettet : "  + cmd.Parameters("return").Value);
    //Response.Write("Der blev slettet : "  + prmAntalDeleted.Value);
}
catch (e)
{
    Response.Write(e.message);
}
finally
{
    // clean up

    if (con.State == adStateOpen)
        con.Close;
    con = null;
}

%>
Avatar billede ldanielsen Nybegynder
17. oktober 2004 - 15:36 #9
Jeg kan ikke rigtig hjælpe dig med det. Det ser ud som om det er C# du skriver og det ligner også .NET, men ingen af tingene har jeg forstand på.

Jeg har haft det til at virke i ASP m. VBScript
Avatar billede ldanielsen Nybegynder
17. oktober 2004 - 15:51 #10
I ASP ville jeg ikke skulle bruge .Value til at hente værdien af parameteret:

Jeg ville prøve:
....
prmAntalDeleted.Name = "@Count";
....

- og:

...
Response.Write("Der blev slettet : "  + cmd.Parameters("@Count"));
....
Avatar billede ldanielsen Nybegynder
17. oktober 2004 - 15:52 #11
og drop

return(@Count)

i SP'en
Avatar billede hnteknik Novice
17. oktober 2004 - 19:04 #12
Tak for din indsats. Det kunne godt ligne Csharp, men er blot javascript. Du bruger også try catch i java og javascript. Jeg har også prøvet den variation.
it strikes me - jeg prøver at løfte den i ASP gruppen. Tak Anyway.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester