Forum » Programiranje » [SQL] problem z proceduro
[SQL] problem z proceduro
greentech ::
Mam proceduro v sql, ki zgleda takole:
CREATE PROCEDURE dbo.p_teze_ose_ins
(
@tiskalnik_id INT,
@count INT,
@teza decimal(11,3)
)
/*WITH ENCRYPTION*/ AS
declare @curr_count as int
--declare @max_count as int
declare @skupna_teza as decimal(11,3)
declare @zaporedje as int
SELECT @zaporedje=zaporedje FROM teze_TSE
/* preberemo koliko tehtanj je ze vnesenih */
SELECT @curr_count = MAX(zaporedje)
FROM teze_ose
WHERE (tiskalnik_id = @tiskalnik_id)
GROUP BY zaporedje
if @curr_count is null
SET @curr_count = 0
SET @curr_count = @curr_count + 1
print @count
print @curr_count
/* preverimo ce je pakiranje ze polno */
IF (@curr_count = @count)
BEGIN
/* preberemo trenutne teze */
SELECT @skupna_teza = SUM(teza)
FROM teze_OSE
WHERE (tiskalnik_id = @tiskalnik_id)
GROUP BY teza
/* pristejemo zadnjo tezo */
SET @skupna_teza = @skupna_teza + @teza
--dodamo zapis v OSE pakiranje
insert into teze_ose(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @teza)
--preberemo zadnje zaporedje na paleti
SELECT @curr_count = MAX(zaporedje)
FROM teze_TSE
WHERE (tiskalnik_id = @tiskalnik_id)
if @curr_count is null
SET @curr_count = 0
SET @curr_count = @curr_count + 1
-- tezo pristejemo paleti
insert into teze_tse(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @skupna_teza)
---brisemo OSE teze
--IF @zaporedje!=NULL
delete from teze_ose
where (tiskalnik_id = @tiskalnik_id)
END
ELSE
BEGIN
--ce gre za naslednji OSE brisi teze v starem OSE
/*IF (@curr_count = @count + 1)
BEGIN
delete from teze_ose
where tiskalnik_id = @tiskalnik_id
set @curr_count = 1
END*/
insert into teze_ose(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @teza)
END
RETURN
GO
--Procedura je povezana z uporabniškim vmesnikom v programskem jeziku C#, in skrbi za vnos podatkov v polja. V polje OSE pakiranja vnašaš teže. zraven imaš eno NUD(numeric up down) komponento, ki ti določi koliko tež lahko bneseš v OSE. KO vneseš število tež ki si jih določil, se skupen seštevek vnosov tež v OSE pakiranja prenese v TSE pakiranja(ka točno to pomeni milsim da ni tako pomembno).
---Problem je pa v tem, da zadnje teže, ki jo vneseš v OSE pakiranje ne prišteje k skupni teži, ki jo prenese v TSE pakiranja.
---Za seštevanje skrbi priložena SQL procedura, tako da mora biti problem nekje v tej funkciji. Problem je pomoje v tem, da zadnji vnso zbriše bi ga lahko prištelo k skupni teži, vendar ne vem kako to rešit.
Že vnaprej hvala za pomoč
CREATE PROCEDURE dbo.p_teze_ose_ins
(
@tiskalnik_id INT,
@count INT,
@teza decimal(11,3)
)
/*WITH ENCRYPTION*/ AS
declare @curr_count as int
--declare @max_count as int
declare @skupna_teza as decimal(11,3)
declare @zaporedje as int
SELECT @zaporedje=zaporedje FROM teze_TSE
/* preberemo koliko tehtanj je ze vnesenih */
SELECT @curr_count = MAX(zaporedje)
FROM teze_ose
WHERE (tiskalnik_id = @tiskalnik_id)
GROUP BY zaporedje
if @curr_count is null
SET @curr_count = 0
SET @curr_count = @curr_count + 1
print @count
print @curr_count
/* preverimo ce je pakiranje ze polno */
IF (@curr_count = @count)
BEGIN
/* preberemo trenutne teze */
SELECT @skupna_teza = SUM(teza)
FROM teze_OSE
WHERE (tiskalnik_id = @tiskalnik_id)
GROUP BY teza
/* pristejemo zadnjo tezo */
SET @skupna_teza = @skupna_teza + @teza
--dodamo zapis v OSE pakiranje
insert into teze_ose(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @teza)
--preberemo zadnje zaporedje na paleti
SELECT @curr_count = MAX(zaporedje)
FROM teze_TSE
WHERE (tiskalnik_id = @tiskalnik_id)
if @curr_count is null
SET @curr_count = 0
SET @curr_count = @curr_count + 1
-- tezo pristejemo paleti
insert into teze_tse(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @skupna_teza)
---brisemo OSE teze
--IF @zaporedje!=NULL
delete from teze_ose
where (tiskalnik_id = @tiskalnik_id)
END
ELSE
BEGIN
--ce gre za naslednji OSE brisi teze v starem OSE
/*IF (@curr_count = @count + 1)
BEGIN
delete from teze_ose
where tiskalnik_id = @tiskalnik_id
set @curr_count = 1
END*/
insert into teze_ose(tiskalnik_id, zaporedje, teza)
values (@tiskalnik_id, @curr_count, @teza)
END
RETURN
GO
--Procedura je povezana z uporabniškim vmesnikom v programskem jeziku C#, in skrbi za vnos podatkov v polja. V polje OSE pakiranja vnašaš teže. zraven imaš eno NUD(numeric up down) komponento, ki ti določi koliko tež lahko bneseš v OSE. KO vneseš število tež ki si jih določil, se skupen seštevek vnosov tež v OSE pakiranja prenese v TSE pakiranja(ka točno to pomeni milsim da ni tako pomembno).
---Problem je pa v tem, da zadnje teže, ki jo vneseš v OSE pakiranje ne prišteje k skupni teži, ki jo prenese v TSE pakiranja.
---Za seštevanje skrbi priložena SQL procedura, tako da mora biti problem nekje v tej funkciji. Problem je pomoje v tem, da zadnji vnso zbriše bi ga lahko prištelo k skupni teži, vendar ne vem kako to rešit.
Že vnaprej hvala za pomoč
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Silverlight 4] Omejeno premikanje elementov v canvasuOddelek: Programiranje | 1252 (1132) | xordie |
» | SQL problemOddelek: Programiranje | 1358 (1205) | JanezH |
» | C# BackgroundWorker Class problemOddelek: Programiranje | 1271 (1227) | hendriks |
» | C++ programiOddelek: Programiranje | 2528 (2124) | ERGY |
» | Funkcija v SQLOddelek: Programiranje | 1359 (1226) | destiny |