Comment vérifier si une requête select résultat est NULL en SQL Server

dans SQL Server , comment puis-je vérifier si une requête a retourné NULL et exécuter des blocs en fonction de cela . par exemple, dans la requête 1 , je veux vérifier if count(*) is not null et de vérifier ensuite si elle a >0 . Dois-je utiliser if exists ici ?

if select count(*) from tbl1 not is NULL then 
   if select count(*) from tbl1 where count(*)>0 then
      raiserror()
   end if 
end if 

Dans Oracle on peut dire IF INSERTING THEN ou IF updating THEN ou if deleting then exécuter un bloc de code basé sur une colonne . comment pouvons-nous le faire dans SQL Server ? Veuillez consulter l'Oracle de code ci-dessous .

CREATE OR REPLACE TRIGGER tr_name
    BEFORE DELETE OR INSERT OR UPDATE OF column1 ON tbl1
    FOR EACH ROW
    WHEN (NEW.column1 IS NOT NULL)
begin
IF INSERTING THEN
    run some code like check if there are more than row in a table and if >0 then not allow any    inserts 
IF updating THEN
    run some code 
IF deleting THEN
    run some code 
end
  • COUNT ne retourne jamais NULL.
  • Merci , qu'est-Ce que l'utilisation de -1 ici ?
  • Ce n'est pas parce que COUNT(*) ne retourne jamais NULL
  • Je ne peux vraiment pas penser à un cas de cette, à moins que vous l'utilisez dans une sous-requête et se joindre à elle. Ensuite, il n'est plus COUNT(*), c'est juste une partie d'un jeu d'enregistrements.
  • Peut-être que mon exemple n'est pas tout à fait droit . Donc ma question était de savoir si une requête renvoie la valeur NULL, alors comment puis-je écrire un bloc selon eux . Peut-être que le count(*) exemple n'est pas bon pour cela . Mais pour tous les autres cas dois-je utiliser ISNULL(select name from tbl1 where name ='a name')>0
  • Merci. A la recherche d'un moyen de formuler cela 🙂
  • Vous dites aussi where count(*) > 0 qui n'a pas beaucoup de sens non plus. Les agrégats ne peuvent pas apparaître dans WHERE clauses, juste HAVING, et sans GROUP BY qui ne fonctionne pas.
  • Êtes-vous certain que vous voulez écrire un bloc? Ou voulez-vous évaluer ce sur ligne par ligne?
  • Il serait peut-être préférable si vous pouvez décrire ce que vous êtes en train d'essayer de faire. Vous obtiendrez de meilleurs résultats qu'avec ces exemples inventées.
  • Vous pouvez également consulter le page MSDN sur ISNULL, parce que je ne le pense pas ce que vous pensez que cela fonctionne, compte tenu de votre ISNULL(...) > 0 exemple dans ce commentaire.
  • Aussi garder à l'esprit une requête ne retourne NULL. Une colonne ne. Une requête peut retourner pas de lignes (dans ce cas, un COMTE de retour 0)
  • Si vous venez de vérifier si une requête renvoie des résultats ou non, puis oui, vous devez utiliser IF EXISTS (<query>)...
  • J'ai maintenant édité la question et il montre maintenant ce que j'essayais de faire .
  • Donc, vous êtes en train de rédiger un déclencheur et que vous voulez détecter ce type d'opération a provoqué le déclenchement de l'incendie?
  • Oui , c'est exact, Damien et ensuite faire la vérification (j'ai maintenant de bons exemples pour la vérification de la grâce à tous les utilisateurs ici)

InformationsquelleAutor user3844877 | 2014-08-15