je cette table et la fonction stockée proc:requête SQL et la procédure stockée ne produisant pas les résultats souhaités
Tableau:
CREATE TABLE _DMigNumbers(
Number numeric(20,0) NOT NULL PRIMARY KEY
);
INSERT INTO _DMigNumbers VALUES(0)
fonction stockée proc:
CREATE FUNCTION read_and_increment()
RETURNS NUMERIC(20,0)
BEGIN
DECLARE @number_just_read NUMERIC(20,0);
SELECT number INTO @number_just_read
FROM _DMigNumbers;
UPDATE _DMigNumbers
SET number = number + 1;
RETURN @number_just_read;
End
et I créer cette Numbers table aussi bien
CREATE TABLE _Numbers (
Number int NOT NULL PRIMARY KEY
);
INSERT INTO _Numbers VALUES(1)
INSERT INTO _Numbers VALUES(2)
INSERT INTO _Numbers VALUES(3)
INSERT INTO _Numbers VALUES(4)
MAINTENANT:
quand je fais ceci:
select
f.Number
,read_and_increment()
from _Numbers f
je reçois:
Number-----Value 1 0 2 0 3 0 4 0
Je veux autre valeur comme (0,1,2,3) - qu'est-ce que je dois faire pour y parvenir?
Je comprends que je reçois les mêmes valeurs en raison de la Unique.Sélectionnez, mais pas sûr de ce que je dois faire pour obtenir ce que je suis après au moment ......
Je ne peux pas utiliser IDENTITÉ ou autoincrement voir my previous question for more details if interested...
Merci,
Voodoo
qui ressemble à de la programmation vaudou. afaik, c'est la première fois que j'ai vu ce type de requête (mise à jour en sélectionnant) question ici SO – Hao
Basé sur la réponse acceptée de l'autre poste, il semble qu'il vous manque une déclaration de validation. Cela se passe-t-il automatiquement dans Sybase? –
Je n'ai pas accès à Sybase, donc je ne peux pas exécuter ce code. Cependant, dans SQL Server, vous ne pouvez pas faire une telle fonction, vous obtiendrez l'erreur suivante: 'Utilisation invalide d'un effet secondaire ou d'un opérateur dépendant du temps dans 'UPDATE' dans une fonction.' Je ne sais pas comment vous ' d le faire dans Sybase. –