En passant dynamique des paramètres d'une procédure stockée dans SQL Server 2008

J'ai cette procédure qui exécute une autre procédure adoptée par un paramètre et de ses paramètres datefrom et dateto.

CREATE procedure [dbo].[execute_proc] 
@procs varchar(200),
@pdatefrom date,
@pdateto date
as

exec @procs  @datefrom=@pdatefrom,@dateto=@pdateto

Mais j'ai besoin aussi de passer les paramètres dynamiquement sans avoir besoin de les modifier dans la procédure. Par exemple, ce que je m'imagine est quelque chose comme cela

 CREATE procedure [dbo].[execute_proc] 
    @procs varchar(200),
    @params varchar(max)
 as
    exec @procs @params 

@params est une chaîne de caractères comme @param1=1,@param2='somethingelse'

Est-il un moyen de faire cela?

  • visitez ce lien: sqlteam.com/article/...
  • Qu'est-ce exactement que vous souhaitez atteindre? Si vous ne savez pas quels sont les paramètres qui seront passés à la procédure, comment pouvez-vous les utiliser dans le code de la procédure?
  • hmm je ne pense pas que cela répond à ma question 🙁
  • Oui je ne sais pas quels sont les paramètres qui seront passés à la procédure stockée à chaque fois, Donc, il va générer l'exécution à chaque fois
  • Que voulez-vous dire "générer de l'exécution à chaque fois"? Si les paramètres peuvent être n'importe quoi, et si vous ne savez pas à l'avance ce qu'ils sont, alors comment pouvez-vous écrire n'importe quel code utiliser?
  • Bien que le code s'appuie sur la procédure qui est exécuté à chaque fois. Le Seul rôle de cette procédure est d'exécuter une autre procédure en passant des paramètres sans connaître le nombre de paramètres qu'ils sont ou de ce type de données.
  • NB: C'est une mauvaise idée à partir d'un point de vue sécurité - vous êtes essentiellement en fournissant un proxy pour exécuter quoi que ce soit sur le serveur SQL.
  • Je comprends la question de la sécurité, Donc il n'y a pas d'autre moyen, j'ai pensé que, parce que je peux passer à la procédure stockée de manière dynamique et exécutée à l'intérieur d'une autre procédure dans sql server, ils ont aussi développé une variable dire @params comme paramtype ont été, je peux passer mes variables wraped en un seul. Encore l'idée de passer une variable spéciale disent tableau de valeurs et types, ce serait bien. De toute façon à l'ancienne est le seul moyen.

InformationsquelleAutor themis | 2012-03-29