[ kimistan @ 17.03.2006. 12:17 ] @
| Zdravo,
Imam proceduru koja radi select po tabeli i tog trenutka lockuje tabelu,kada mi pristignu neki podaci ja bih trebao da napravim update polja koji je lock-ovan u predhodnoj proceduri,druge procedura odradi svoje ali ne update-je 'Polje3',pocetnik sam i svaki savet ce mi dobro doci?
Ovo je ta druga procedura koja treba da update-je polja:
CREATE PROCEDURE dbo.UpdatePolje
@sXML NTEXT
AS
DECLARE @idPolje INT
DECLARE @Polje1 INT
DECLARE @Polje2 VARCHAR(16)
DECLARE @iDoc INT
EXEC sp_xml_preparedocument @iDoc OUTPUT,@sXML
IF @@Error <> 0
begin
print @@error
return -1
end
SELECT @idPolje=idPolje,@Polje1 = Polje1,@Polje2 = Polje2
FROM OPENXML(@iDoc,'/root/UpdatePolje',2)
WITH
(
idPolje int 'idPolje',
Polje1 int 'Polje1',
Polje2 VARCHAR(16) 'Polje2'
)
UPDATE Table1
SET Polje3 = 1
WHERE idPolje = @idPolje AND Polje1 =@Polje1 AND Polje2 = @Polje2
EXEC sp_xml_removedocument @iDoc
GO
Hvala unapred!
|
[ hakiro @ 27.04.2006. 21:34 ] @
j...ga nemam odgovor ali evo ti nekoliko hintova
koji lock si koristio - tip locka
da li si uradio debug procedure
da li postoji slog u bazi koji sadrzi polje1=....
CREATE PROCEDURE dbo.UpdatePolje
@sXML NTEXT
AS
DECLARE @idPolje INT
DECLARE @Polje1 INT
DECLARE @Polje2 VARCHAR(16)
DECLARE @iDoc INT
EXEC sp_xml_preparedocument @iDoc OUTPUT,@sXML
IF @@Error <> 0
begin
print @@error
return -1
end
SELECT @idPolje=idPolje,@Polje1 = Polje1,@Polje2 = Polje2
FROM OPENXML(@iDoc,'/root/UpdatePolje',2)
WITH
(
idPolje int 'idPolje',
Polje1 int 'Polje1',
Polje2 VARCHAR(16) 'Polje2'
)
PRINT @idPolje
PRINT @Polje1
PRINT @Polje2
UPDATE Table1
SET Polje3 = 1
WHERE idPolje = @idPolje AND Polje1 =@Polje1 AND Polje2 = @Polje2
SELECT @@rowcount
SELECT COUNT(*) FROM Table1 WHERE idPolje = @idPolje AND Polje1 =@Polje1 AND Polje2 = @Polje2
EXEC sp_xml_removedocument @iDoc
GO
probaj ovo pa cemo videti
[ Simke @ 30.04.2006. 02:34 ] @
Koristi WITH (NOLOCK) opciju
Recimo SELECT * FROM abc WITH (NOLOCK)
Inace ako ti stored procedure ima samo SELECT statements, na pocetku mozes da stavis
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED, onda nemoras da koristis WITH (NOLOCK) opciju.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.