2010-08-17 7 views
0

Bonjour mes amis j'ai la requête suivante qui va à l'encontre du but même.Comment raccourcir paramètre curcit nul (SQL)

Circuit jour pour trier j'ai demandé il y a la suggestion du paramètre qui sont nuls pour que j'ai eu l'idée d'utiliser
(@firstYrPercent is null OR first_year_percent>[email protected]) comme celui-ci de refuser le paramètre nul, mais aujourd'hui, quand je cours requête réelle, je pense que cette idée ci-dessus mentionné est inutile.

Je reçois exception sql pour tous les paramètres qui sont nuls et il est valeur exigeante pour les erreurs est cette exception Sql est pris:

« paramétrées requête « (@courseId int, @ passoutYear int, @currentBacklog int, int @ sexe, @ eG » attend paramètre @currentDegeePercentage, qui n'a pas été fourni"

Voici la requête s'il vous plaît me proposer une alternative.

string cmd = @"SELECT * FROM [tbl_students] WHERE [email protected] 
      AND branch_id IN(" + branchId + @") 
      AND (@firstYrPercent is null OR first_year_percent>[email protected]) 
      AND (@secondYrpercent is null OR second_year_percent>[email protected]) 
      AND (@thirdYrPercent is null OR third_year_percent>[email protected]) 
      AND (@finalYearpercent is null OR final_year_percent>[email protected]) 
      AND (@currentDegeePercentage is null OR current_degree_percent>[email protected]) 
      AND (@passoutYear is null OR passing_year>[email protected]) 
      AND (@currentBacklog is null OR current_backlog<[email protected]) 
      AND [email protected] 
      AND (@eGap is null OR gapin_education<[email protected]) 
      AND (@highSchoolPercentge is null OR highschool_percentage>[email protected]) 
      AND (@higherSchoolPercentage is null OR ssc_percentage>[email protected]) 
      AND (@grauationPercentage is null OR graduation_percentage>[email protected]) 
      AND (@diplomaPercentage is null OR diploma_percentage>[email protected]) 
      AND (@noOfAtkt is null OR number_of_ATKT<[email protected]) 
      AND (@date is null OR DOB>[email protected])"; 

Répondre

1

Vous devez vous assurer que vous définissez le paramètre @currentDegeePercentage sur la commande que vous exécutez - en particulier, si vous voulez passer ce paramètre en tant que nul, assurez-vous que le paramètre est ajouté à la commande: DBNull.Value.

Si vous n'ajoutez pas le paramètre à la collection Command.Parameters ou si vous l'ajoutez mais que vous définissez la valeur sur null (par opposition à DBNull.Value), l'erreur que vous voyez s'affichera.

+0

tout d'abord ce n'est pas une procédure stockée et quelle que soit la demande que vous avez faite ci-dessus, j'ai fait tout cela, mais encore il donne l'erreur. Et il donne l'erreur pour seulement les paramètres qui ont une valeur nulle. Alors que quand je fournir toutes les erreurs de paramètres n'est pas du tout. S'il vous plaît laissez-moi savoir quelle est l'erreur? – NoviceToDotNet

+0

@NoviceToDotNet - Il ne doit pas être une procédure stockée, je n'ai pas mentionné sprocs. Le point est, si vous construisez toute forme d'instruction SQL à exécuter qui contient des paramètres (qu'il s'agisse d'une procédure stockée ou d'une instruction ad hoc SQL comme ça) - vous devez vous assurer de définir tous ces paramètres sur la commande en cours d'exécution obtenez l'erreur que vous voyez. L'exception est lorsque vous utilisez des procédures stockées, alors vous pouvez utiliser les paramètres par défaut/facultatifs. Si vous postez votre code où vous exécutez le SQL à partir de .NET, cela aiderait. – AdaTheDev

0

Le problème n'est pas que le paramètre est null mais que le paramètre est manquant. Vérifiez les fautes de frappe (c'est "degré", pas "degee" [sic]).

+0

non dans mon cas c'est "degee" pas le degré ok. Et l'ai déjà testé pour toute la valeur quand je fournisse tout le paramètre avec aucune valeur nulle cela fonctionne. – NoviceToDotNet