paramètre de requête sql :SSRS
Je suis en utilisant oracleclient
fournisseur. Je me demandais comment puis-je utiliser un paramètre dans la requête.
select * from table A where A.a in ( parameter).
Le paramètre doit être un multivalue
paramètre.
comment puis-je créer un ensemble de données?
Vous devez vous connecter pour publier un commentaire.
Simple. Ajouter le paramètre pour le rapport et assurez-vous de s'en débarrasser comme plusieurs valeurs. Puis dans l'onglet données et allez modifier la requête, cliquez sur le bouton "..." pour modifier le jeu de données. Sous l'onglet paramètres de créer un mappage de paramètres de sorte qu'il ressemble à quelque chose comme ceci (évidemment, vous aurez des noms différents pour vos paramètres):
Puis dans l'onglet requête utiliser le coorelated sous-requête comme votre exemple ci-dessus. Je l'ai fait plusieurs fois avec SQL server et il n'y a aucune raison qu'il ne doit pas travailler avec Oracle depuis SSRS va construire une conforme à la norme ANSI SQL déclaration qu'elle va passer à Oracle.
Vous ne pouvez pas avoir une variable dans la liste dans oracle directement. Toutefois, vous pouvez briser une séparation par virgule liste dans les lignes qui peuvent être utilisés dans votre sous-requête. La chaîne txt peut être remplacé par n'importe quel nombre de valeurs séparées par une virgule.
La requête fonctionne d'abord en comptant le nombre de virgules qui sont dans la chaîne de texte. Il le fait en utilisant un reqular expression de supprimer tous les non des virgules et compte ensuite de la longueur du reste.
Il utilise ensuite un Oracle "truc" pour retourner le nombre de + 1 au nombre de lignes à partir de la double table. Il utilise ensuite la regexp_substr fonction de sortir chaque occurence.
D'abord dans SSRS avec un Oracle de connexion OLEDB vous devez utiliser le côlon, pas le symbole @ par exemple :paramètre non @paramètre, mais alors vous n'êtes pas capable de faire cela comme un multi-paramètre à valeur, il n'accepte que des valeurs uniques. Pire encore, si vous utilisez une connexion ODBC, vous devez utiliser le point d'interrogation par lui-même par exemple ? pas @paramètre, puis la commande de paramètres prend de l'importance, et ils peuvent également ne pas être multi-valuées. La seule façon, vous êtes de gauche avec l'aide d'une expression pour construire une requête (join() de la fonction pour le param) ou l'appel d'une procédure stockée.
La procédure stockée est la meilleure option parce que la SSR peut gérer les paramètres de stockage des procs de SQL Server et Oracle très proprement, mais si ce n'est pas une option, vous pouvez utiliser cette expression:
Ou si les valeurs des paramètres sont des chaînes qui ont besoin d'apostrophes autour d'eux:
Lorsque vous cliquez-droit sur le jeu de données, vous pouvez sélectionner "propriétés du jeu de données", puis utilisez le bouton fx pour modifier la requête comme une expression, plutôt que d'utiliser le concepteur de requêtes qui ne vous laisseront pas de les éditer comme une expression.
Cette méthode d'expression est limitée à un maximum d'environ 1000 valeurs, mais si vous en avez beaucoup, c'est la mauvaise façon de le faire de toute façon, vous préférez adhérer à une table.
Je ne pense pas que vous pouvez utiliser un paramètre dans une telle situation.
(À moins que oracle et le langage que vous utilisez prend en charge tableau-type des paramètres ? )
Les paramètres de l'oracle sont définis comme: "parametername", donc dans votre requête, vous devez utiliser quelque chose comme:
Ajouter le paramètre à l'paramètres des dossiers dans le rapport et cochez la case "Autoriser plusieurs valeurs".
Comme Victor Grimaldo mentionnés ci-dessous... a travaillé pour moi très fine. Dès que j'utilise le
:parameter
dans ma requête SQL dans SSRS dataset1.. il m'a demandé d'entrer les valeurs de ces paramètres, pour lequel j'ai choisi déjà créé SSRS paramètres.SELECT * FROM table a WHERE VALUE IN (**:parametername**)
Merci Victor.