Kan man deklarera typ en otional variabel som om det inte har ett värde får ett default värde? <code> Tjena! Skulle nog förtydligat lite. Kör den sp'n från ASP.NET och vill slippa behöva definera en variabel som jag måste sätta till 0, tex CheckID=0 utan vill att om jag inte skickar in en sådan variabel så ska sql server känna av det och tilldela variabeln CheckID värdet 0. Hoppas det förstås bättre nu! <b>>vill att om jag inte skickar in en sådan variabel så ska sql server känna av det och tilldela variabeln CheckID värdet 0.</b> <b>Eller så kan du ha "optional" sist.</b> Pseudokod: Ok, missförstod lite, har inte hunnit testa koden pga annat stressdritt.Optional variabeldeklaration
har nu
<code>
CREATE PROCEDURE sp_w_UpdateNew
@CheckID int,
@Check nvarchar(300)
AS
IF @CheckID=0
Insert into tCheck
(Check)
values (@Check);
else
update tCheck
set Check=@Check
where CheckID=@CheckID
GO
</code>
Om det är en ny post som läggs så sätter jag CheckID till 0 i applikationen, det känns som man borde kunna slippa det?Sv: Optional variabeldeklaration
CREATE PROCEDURE proc_w_UpdateNew
@CheckID int = 0,
@Check nvarchar(300)
AS
IF @CheckID=0
Insert into tCheck
(Check)
values (@Check);
else
update tCheck
set Check=@Check
where CheckID=@CheckID
GO
</code>
Men då måste du ange variabelnamnet vid exec
EXEC proc_w_UpdateNew @Check = 'Olle'
Eller så kan du ha "optional" sist.
Notera också att sp_ som prefix inte är att rekommendera, då det står för SystemProcedure och KAN exekveras på ett oväntat sätt.
/mickeSv:Optional variabeldeklaration
Angående sp-namngivningen så har jag precis förstått att SQL Server kan blanda ihop med egna sp i master db'n. Men samtidigt - när jag försöker göra en egen sp som redan finns i master så får jag ett felmeddelande. så det går ju inte att blanda ihop - eller?Sv: Optional variabeldeklaration
Som Micke visade ovan, så är det det som sker om du inte anger ett argument för CheckID.
Mao du har fått svaret på din fråga redan.
//HåkanSv:Optional variabeldeklaration
Har iofs inte kollat efter just nu, men måste inte optional alltid ligga efter mandatory variabler? Vill minnas att det är så...Sv: Optional variabeldeklaration
CREATE PROC test
@var1 int, @var2 int = 5, @var3 int
AS
blalalalalalala.
Anropas med :
test 1, 2, 3
Då MÅSTE alla utelämnade variabler vara i slutet. Även @var3 måste ha ett defaultvärde för att det skall funka att skriva
test 1, 2
annars kan man skriva
test @var1=1, @var2=2, @var3=3
Nu kan man utelämna @var2 genom att köra
test @var1=1, @var3=3
istället.
/mickeSv:Optional variabeldeklaration
Stort tack! :)