Just nu i M3-nätverket
Gå till innehåll
ikaikaika

problem med c# kod

Rekommendera Poster

Hej, jobbar inte med programmering men skulle behöva lösa denna kod. Har enbart grundkunskap i tsql så känner mig väldigt vilsen. Är det någon som kan förklara koden samt hjälpa till med lösningen?

 

 

Följande C#-kod körs i en aspx-sida.

...
...
long sum = 0; 
for ( int i = 0; i < 888; i++)
{
    // GetIntFromSQL returns an int from an SQL-statement-resultset with one
    // row, one column
    sum += GetIntFromSQL("EXEC dbo.ObscureProcedure @i = "+ i.ToString());
};
Response.Write(sum.ToString());
...
...
 


Proceduren i Microsoft SQL Server ser ut enligt:

CREATE PROCEDURE dbo.ObscureProcedure
    @i int
AS
BEGIN
    SELECT
        CASE
            WHEN @i < 260 THEN
                COUNT(*) * @i 
            ELSE
                COUNT(*) * 260
        END AS ObscureCount
    FROM
        VacationGadget
    WHERE
        @i < 714
END


Kör man proceduren i Microsoft SQL Server Management Studio enligt ...

EXEC dbo.ObscureProcedure @i = 528


... så får man svaret:

ObscureCount
------------
3138460

(1 row(s) affected)

 

Vilket tal skulle C#-koden högst upp skriva ut?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hmmm... Vad är det för suspekt kod du hittat?

 

Koden skapar en variabel sum och börjar en loop som snurrar åttahundraåttioåtta gånger. För varje snurr i loopen så adderar man till sum, resultatet av sql-proceduren med parametervärde av den snurr man är inne på.

 

Förtydligande, först anropar man parametern med värde 0, sen 1, sen 2 etc etc ända upp till 887.

 

Proceduren å andra sidan hämtar upp antalet rader i tabellen VacationGadget och multiplicerar det med värdet du skickade in till proceduren om detta värde är mindre än 260, annars multiplicerar den med 260. Fast vad WHERE @i < 714 gör är jag inte helt hundra på.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag tror jag klurat ut att WHERE @I < 714 innebär att om du skickar in ett värde till proceduren som är större än 714 så kommer den returnera 0.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

 

Vilket tal skulle C#-koden högst upp skriva ut?

Jag har fått det till att svaret är 1834429870.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...