Avatar billede janemil Nybegynder
30. maj 2006 - 11:33 Der er 11 kommentarer og
1 løsning

Stored procedure - review

Mål:
BO_Email1 ind
Username ud

Det virker, men vil gerne have review på at gøre det lækkert.

/****** Object:  Stored Procedure sp_do_userinfo_by_email ******/
/*
* PROCEDURE sp_do_userinfo_by_email
*/
CREATE PROCEDURE sp_do_userinfo_by_email
(@BO_Email1  varchar(65))
AS
BEGIN
    SELECT Username FROM TUser WHERE BO_Email1 = @BO_Email1 order by ID desc
        RETURN(0)

END

GO
Avatar billede ldanielsen Nybegynder
30. maj 2006 - 12:03 #1
Hvad laver RETURN(0) ?
Avatar billede janemil Nybegynder
30. maj 2006 - 12:07 #2
Er det ikke den som sender Username retur?
Avatar billede janemil Nybegynder
30. maj 2006 - 12:08 #3
Forslag til rettelser modtages meget gerne. Er voldsomt nærtagene, men skal nok give points ;-)
Avatar billede dr_chaos Nybegynder
30. maj 2006 - 12:19 #4
normal vil det være
CREATE PROCEDURE sp_do_userinfo_by_email
@BO_Email1  varchar(65)
AS
BEGIN
    SELECT Username FROM TUser WHERE BO_Email1 = @BO_Email1 order by ID desc
END

GO


intet return på
Avatar billede dr_chaos Nybegynder
30. maj 2006 - 12:20 #5
Husk en e-mail kan være på optil 255 chars
Avatar billede janemil Nybegynder
30. maj 2006 - 12:21 #6
Takker for svar.
Er der mere man kan forbedre. Lig gerne svar ved forslag. Så kan jeg lige give points om 5 min.
Avatar billede dr_chaos Nybegynder
30. maj 2006 - 12:26 #7
Ikke umiddelbart hvad jeg kan se.
Måske ldanielsen har nogle foreslag.

Hvis du kun skal have et username ud, så ville jeg lave den med en outputparameter:
CREATE PROCEDURE sp_do_userinfo_by_email
@BO_Email1  varchar(255),
@UserName varchar(100) output
AS
BEGIN
    SELECT @UserName=Username FROM TUser WHERE BO_Email1 = @BO_Email1
END

GO
Avatar billede ldanielsen Nybegynder
30. maj 2006 - 13:32 #8
dr_chaos har jo vist de to måder at returnere fra en sp, så jeg har ikke mere at tilføje.

Men det kunne måske være en ide at lave det i en User defined function i stedet. Der sker intet med data, den laver blot et opslag og returnerer en værdi. Præcis det en function kan.

Men det kommer jo an på hvor og hvordan du bruger den.

Hvis du vi have begge dele kan du lade sp'en kal de din function.
Avatar billede janemil Nybegynder
30. maj 2006 - 13:41 #9
Tak for ekstra hjælp til ldanielsen
Avatar billede thrytter Nybegynder
02. juni 2006 - 09:25 #10
Lige et par kommentarer.

Sp'ere bør ikke prefix'es med sp_
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/createdb/cm_8_des_01_116b.asp

Vil forøvrigt mene, at BEGIN END kan slettes.

Er vistnok best practice at bruge "fully qualified name" i stil med
SELECT @UserName = dbo.TUser.Username
FROM  dbo.TUser
WHERE  dbo.TUser.BO_Email1 = @BO_Email1
Avatar billede janemil Nybegynder
02. juni 2006 - 10:11 #11
Tak for forklaring og link
Avatar billede thrytter Nybegynder
02. juni 2006 - 10:28 #12
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