[ 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.