2017-08-14 4 views
0

Je suis en train de créer un rapport à partir d'une requête qui renvoie une liste des transactions qui contient les éléments suivants: Trans_Id, Trans_Type, date, amount, status, clientComment passer un seul paramètre, le paramètre multiple ou nul à un rapport

la requête serait simplement ce qui suit:

Select Trans_Id, Trans_Type, date, amount, status, client 
from table. 

Ce que je veux faire est d'ajouter toutes les colonnes en tant que paramètres pour le rapport, ce qui permet à l'utilisateur de remplir un paramètre ou plus d'un paramete r et basé sur cela retournera les données ou ne remplira rien alors il retournera tout. C'est comme activer une condition WHERE si un paramètre est rempli sinon retourner tout.

Toute aide serait grandement appréciée

Répondre

1

Une façon de le faire serait une fonction qui utilise SQL dynamique pour assembler une instruction SELECT sur la base des paramaters peuplées. Cependant, cela est probablement exagéré pour la simple requête que vous postez.

Ce tests de solution si chaque paramètre est nul ou la compare à la colonne pertinente:

Select Trans_Id, Trans_Type, date, amount, status, client 
from your_table yt 
where (:p_Trans_Id is null or :p_Trans_Id = yt.Trans_Id) 
and (:p_Trans_Type is null or :p_Trans_Type = yt.Trans_Type) 
and (:p_date is null or :p_date = yt.date) 
and (:p_amount is null or :p_amount = yt.amount) 
and (:p_status is null or :p_status = yt.status) 
and (:p_client is null or :p_client = yt.client) 
/ 

C'est une technique reconnue, mais il peut être difficile d'accorder une telle requête. Assurez-vous donc de bien le tester avec des volumes de données réalistes.


Remarque: la syntaxe du paramètre varie en fonction du client utilisé pour appeler l'instruction.