Comment utiliser les variables de paramètre dans l'exécution d'une procédure stockée?

J'ai déclaré, et définir certaines variables. Alors je veux utiliser cette valeur de la variable comme paramètre dans l'exécution d'une procédure stockée. Mais j'ai toujours l'erreur

Doit déclarer la variable scalaire.

Voici mes variables:

--declare variables for parameter @listweek
declare @tgl_other varchar(50);

--set variables for parameter @listweekset 
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);

--the variable values should be like this 30-(01-03-2012 - 08-03-2012) 
--and this value that I want to use as parameter value in executing stored procedure

et c'est l'exécution de la procédure stockée:

insert into my_table (field1, field2, field3)
EXEC my_store_procedure @tgl_other
-- the parameter for my_store_procedure is like '30-(01-03-2012 - 08-03-2012)'

C'est à mon variables qui ne sont pas correctes? ou j'ai mauvaise façon d'utiliser la variable de paramètre?

Mise à JOUR:

si j'exécute cette requête:

declare @tgl_other varchar(50);
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);
EXEC my_store_procedure @tgl_other

il fonctionne très bien, mais si j'ajoute INSERT INTO.. les déclarations qu'il ne fonctionne pas. Pourquoi ça arrive?


MISE À JOUR II:
voici la totalité de la requête que j'essaie d'exécuter

declare @tgl_other varchar(50);
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);
TRUNCATE TABLE mytable
GO
INSERT INTO mytable (field1, field2)    
EXEC my_store_procedure @tgl_other
GO
  • Le sql semble être correct .Êtes-vous l'exécution de l'ensemble de commandes sql ou tout simplement l'insérer dans... déclarations ?
  • J'ai l'exécution de l'ensemble de commandes sql. Je l'ai mise à jour de ma question pour plus de détails
  • Vous pouvez poster votre SP ?
  • Pouvez-vous montrer un exemple de sortie de la procédure stockée - seulement quelques lignes de faire...
  • Pouvez-vous confirmer que @tgl_id et @tgl_sg n'ont aucune signification?
  • Avez-vous un GO quelque part entre la déclaration des variables et l'appel pour exécuter la procédure stockée? Les Variables ne sont visibles qu'à l'intérieur de leur champ d'application - lorsque vous avez un GO, qui met fin à la précédente lot/champ d'application et lance un nouveau, et dans cette nouvelle, les variables ne sont pas visibles, a déclaré plus...
  • Je l'ai mise à jour de ma question.
  • la SP ne montre le tableau avec le paramètre
  • Je l'ai mise à jour de ma question pour plus de détails 🙂
  • oui, j'utilise GO dans ma requête. Voulez-vous vérifier ma mise à jour en question? merci 🙂
  • supprimer GO et je pense que vous devriez être bien alors!
  • Allez les groupes de commandes sql dans le lot .Vous ne pouvez pas définir une variable en 1 lot et de l'utiliser dans un autre
  • il fonctionne 🙂 merci à vous, merci d'envoyer une réponse afin que je puisse l'accepter
  • alors j'ai juste besoin de retirer la GO comme @marc_s dit avant? merci pour l'explication 😀

InformationsquelleAutor blankon91 | 2012-07-31