OVH Cloud OVH Cloud

Incrémentation et null value

6 réponses
Avatar
ousta
Bonjour je dispose d'une table et d'une variable ID

je souhaiterai que ma procédure stockée no.1 incrémente de 1 ma variable ID.

je souhaiterai que ma procédure stockée no.2 remplisse le champ comme étant
<null> de ma variable ID.

Sqlserver me dit qu'il est impossible de remplir un champ compteur avec la
valeure <null> comment y remedier?

--
« La programmation est aujourd'hui une course
entre les ingénieurs informaticiens qui essaient
de construire des programmes plus grands et
mieux à l'épreuve des idiots, et l'univers qui essaie
de produire des idiots plus grands et plus idiots.
Jusqu'à présent, l'univers gagne. »
Rich Cook

6 réponses

Avatar
ousta
Veuillez ne pas tenir compte du message precedent:
Voici ce que jaimerais faire:

Bonjour je dispose d'une table et d'une variable ID

je souhaiterai que ma procédure stockée no.1 incrémente de 1 ma variable ID.

je souhaiterai que ma procédure stockée no.2 remplisse le champ avec un int
défini par exemple que je puisse lui entrer la valeur 5 (meme si elle existe
deja dans ma base) via une value au lieu d'une direction

Merci de me préciser comment faire.
Avatar
Fred BROUARD
bonjour

pour ces problèmes d'auto incrémentation, lisez l'article que j'ai rédigé a ce
sujet.
Vous trouverez toutes les méthodes adéquates, et l'auto incrément de SQL Server.
Vous trouverez aussi les pièges à éviter.

http://sqlpro.developpez.com/ClefsAuto/SQL_ClefsAuto.html

A +
ousta a écrit:
Veuillez ne pas tenir compte du message precedent:
Voici ce que jaimerais faire:

Bonjour je dispose d'une table et d'une variable ID

je souhaiterai que ma procédure stockée no.1 incrémente de 1 ma variable ID.

je souhaiterai que ma procédure stockée no.2 remplisse le champ avec un int
défini par exemple que je puisse lui entrer la valeur 5 (meme si elle existe
deja dans ma base) via une value au lieu d'une direction

Merci de me préciser comment faire.





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
ousta
Merci beaucoup cela ma été utile.

J'ai une autre question comment lire un champ datetime contenant la valeure
nulle?

where DateId = NULL ne marche pas quel format utiliser?

--
« La programmation est aujourd'hui une course
entre les ingénieurs informaticiens qui essaient
de construire des programmes plus grands et
mieux à l'épreuve des idiots, et l'univers qui essaie
de produire des idiots plus grands et plus idiots.
Jusqu'à présent, l'univers gagne. »
Rich Cook
"Fred BROUARD" a écrit dans le message de
news:%
bonjour

pour ces problèmes d'auto incrémentation, lisez l'article que j'ai rédigé


a ce
sujet.
Vous trouverez toutes les méthodes adéquates, et l'auto incrément de SQL


Server.
Vous trouverez aussi les pièges à éviter.

http://sqlpro.developpez.com/ClefsAuto/SQL_ClefsAuto.html

A +
ousta a écrit:
> Veuillez ne pas tenir compte du message precedent:
> Voici ce que jaimerais faire:
>
> Bonjour je dispose d'une table et d'une variable ID
>
> je souhaiterai que ma procédure stockée no.1 incrémente de 1 ma variable


ID.
>
> je souhaiterai que ma procédure stockée no.2 remplisse le champ avec un


int
> défini par exemple que je puisse lui entrer la valeur 5 (meme si elle


existe
> deja dans ma base) via une value au lieu d'une direction
>
> Merci de me préciser comment faire.
>
>

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Avatar
Fred BROUARD
NULL n'étant pas une valeur, mais l'abence de valeur une expression comme :
"where DateId = NULL"
ne peut en aucun cas être évaluée.
Pour traiter les MARQUEURS NULL (comme nil en programmation) il faut des outils
spécialisés, comme:
COALESCE, NULLIF, IS NULL, IS NOT NULL.

Dans votre cas :
where DateId IS NULL

A lire :
http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_operateurs_null

A +

ousta a écrit:
Merci beaucoup cela ma été utile.

J'ai une autre question comment lire un champ datetime contenant la valeure
nulle?

where DateId = NULL ne marche pas quel format utiliser?




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
ousta
Merci.
J'ai consulté votre site et j'aurais une question:

Disons que jai une table de deux colonnes

Col1: Id
Col2: Texte


Il peut arriver dans cette colonne que mon ID soit deux fois le meme.
Dans ce cas je souhaite selectionner la premiere ligne contenant cet ID et
ne pas afficher son doublon (je ne veut pas suprimer les doublons ils me
sont utiles).

Jarrive a selectionner une colonne précise avec distinct mais par exemple

select distinct col1, col2 ... ne marche pas car sur deux lignes colone 2
est différent.

Voila si vous avez une solution elle sera la bienvenue.
Avatar
Fred BROUARD
utiliser une fonction d'agrégation statistique comme MAX ou MIN

Exemple :
SELECT MIN(ID), Texte
FROM ...
GROUP BY ID

Mais ce modèle de stockage est idiot... Pourquoi avoir des doublons, alors qu'il
suffirait d'avoir une colonne supplémentaire par exemple Nombre et y mettre le
nombre de fois ou la ligne doit être rencontrée ????

A +


ousta a écrit:
Merci.
J'ai consulté votre site et j'aurais une question:

Disons que jai une table de deux colonnes

Col1: Id
Col2: Texte


Il peut arriver dans cette colonne que mon ID soit deux fois le meme.
Dans ce cas je souhaite selectionner la premiere ligne contenant cet ID et
ne pas afficher son doublon (je ne veut pas suprimer les doublons ils me
sont utiles).

Jarrive a selectionner une colonne précise avec distinct mais par exemple

select distinct col1, col2 ... ne marche pas car sur deux lignes colone 2
est différent.

Voila si vous avez une solution elle sera la bienvenue.





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************