webForumDet fria alternativet

sp_ Uppdatera & hämta om träff.

Databaser & SQLur Databashanterare & SQL

9 svar · 447 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

jag har en tabell AWBStock
-SystemID
-Prefix
-FirstNr
-LastNr
-NrLeft

i min sp så vill jag skicka in systemID och prefix.

och det är här det kniper...

Jag vill nämligen kolla först om prefix finns, och om det finns så vill jag kolla att nrLeft är större än 0.
Om detta stämmer så vill jag hämta ut FirstNr samt uppdatera detta fält med 1 och även dra ifrån 1 från NrLeft.
Kan jag göra detta i en och samma sp?

Medlem sedan juni 200032 967 inlägg
#2
update awbstock set firstnr = firstnr + 1, nrleft = nrleft - 1 
where prefix = 4711 and nrleft > 0
Medlem sedan juli 2001514 inlägg
#3

nja, ser väl ganska ok ut.

problemet är att jag inte får ut firstNR från frågan...
mao typ merga ihop dessa på något sätt:

CREATE PROCEDURE sp_GetNextAWB
	@SystemID	varchar(10),
	@Prefix		char(3)
AS
	SELECT FirstNr
	
	FROM AWBStock
	WHERE SystemID = @SystemID AND Prefix = @Prefix	

GO

och

CREATE PROCEDURE sp_GetNextAWB
	@SystemID	varchar(10),
	@Prefix		char(3)
AS
update awbstock set firstnr = firstnr + 1, nrleft = nrleft - 1 
WHERE SystemID = @SystemID AND Prefix = @Prefix	

GO

ett annat problem är att firstNR är en varchar(7) detta då numret iblan kan vara 0000000 --> med int så blir det ju 0.
Detta påverkade också firstnr + 1

Medlem sedan juni 200032 967 inlägg
#4

Kan ju vara bra att ha med all information som behövs för att lösa problemet redan från början.

Varför är firstnr inte tal? Padding med nollor känns som något man ska fixa i presentationen om man nu ska ha det.

Medlem sedan juli 2001514 inlägg
#5

problemet med att firstnr är varchar är just en gammal lösning så jag vet inte riktigt varför det ser ut som det ser ut... problemet är att tabellen används i en annan lösning så jag kan inte ändra detta.

Medlem sedan juli 2001514 inlägg
#6

Skippade den gamla tabellen - kopierar över data tille en ny tabell istället.
Men hur mergar jag de två ovanstående frågorna så att den returnerar ett värde?

jag måste ju köra min select fråga innan updatefrågan...

Medlem sedan juni 200032 967 inlägg
#7

Varför måste du köra en select först?

Medlem sedan juli 2001514 inlägg
#8

iom att jag uppdaterar värdet som jag skall hämta ut...

Det vore ju lite knasigt om jag uppdaterar värdet, sedan hämtar det uppdaterade värdet och i koden editera värdet till det föregående värde igen...

lite kaka på kaka.

Medlem sedan juni 200032 967 inlägg
#9

ok - jag tror jag missuppfattade lite vad du ville göra.

typ:

create procedure ...
set nocount on
declare @foo int
select @foo = firstnr from awbstock ...

--kör din update

select @foo as firstnr
Medlem sedan juli 2001514 inlägg
#10

sweet.

129 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)