hallo...
ich habe folgende situation (delphi 7, dbexpress driver 7.0.2.113,
MSSQL 7):
<pre>
CREATE TABLE ID_TAB
(
ID int IDENTITY (1, 1) NOT NULL,
UniqueLock uniqueidentifier NOT NULL
)
<br>
CREATE PROCEDURE P_GET_ID AS
begin
DECLARE @MyLock UNIQUEIDENTIFIER;
DECLARE @ID Integer;
Set @MyLock = NewID();
insert into ID_TAB (UniqueLock) values (@MyLock);
Select @ID = ID from ID_TAB where UniqueLock = @MyLock;
Delete from ID_TAB where UniqueLock = @MyLock;
Return @ID;
end;
</pre>
die procedure rufe ich folgendermassen auf:
<pre>
with SQLDataSet1 do
begin
CommandType := ctStoredProc;
CommandText := 'dbo.P_GET_ID';
ExecSQL;
ShowMessage('NEW ID IS: ' + ParamByName('RETURN_VALUE').asString);
end;
</pre>
als ergebnis bekomme ich bei den ersten beiden aufrufen 0 als rückgabewert, und ab dem 3ten aufruch bekomme ich dann meine fortlaufende nummer. hat jemand eine idee, was ich falsch mache?
danke
volkmar
ich habe folgende situation (delphi 7, dbexpress driver 7.0.2.113,
MSSQL 7):
<pre>
CREATE TABLE ID_TAB
(
ID int IDENTITY (1, 1) NOT NULL,
UniqueLock uniqueidentifier NOT NULL
)
<br>
CREATE PROCEDURE P_GET_ID AS
begin
DECLARE @MyLock UNIQUEIDENTIFIER;
DECLARE @ID Integer;
Set @MyLock = NewID();
insert into ID_TAB (UniqueLock) values (@MyLock);
Select @ID = ID from ID_TAB where UniqueLock = @MyLock;
Delete from ID_TAB where UniqueLock = @MyLock;
Return @ID;
end;
</pre>
die procedure rufe ich folgendermassen auf:
<pre>
with SQLDataSet1 do
begin
CommandType := ctStoredProc;
CommandText := 'dbo.P_GET_ID';
ExecSQL;
ShowMessage('NEW ID IS: ' + ParamByName('RETURN_VALUE').asString);
end;
</pre>
als ergebnis bekomme ich bei den ersten beiden aufrufen 0 als rückgabewert, und ab dem 3ten aufruch bekomme ich dann meine fortlaufende nummer. hat jemand eine idee, was ich falsch mache?
danke
volkmar
Comment