MISE À JOUR IN> P> J'ai essayé de créer Une table Temp mais il ne semblait pas fonctionner, pourquoi j'ai demandé ici. P> Sélectionnez VAL à partir de StoredP_Value Code> Dans l'éditeur de requête du SQL Server Management Studio, est-ce possible?
select batchno_seq from (delete from batchno_seq;insert into batchno_seq default values;
select * from batchno_seq) BATCHNO
INTO TEMP_DW_EKSTICKER_CLASSIC
6 Réponses :
Eh bien, non. Pour sélectionner dans une procédure stockée, vous pouvez effectuer les éléments suivants: Si vous utilisez les résultats d'une procédure stockée de cette manière et em> vous avez écrit la procédure stockée, envisagez sérieusement de changer le code pour être une fonction de vue ou définie par l'utilisateur. Dans de nombreux cas, vous pouvez remplacer ce code avec une construction plus simple et mieux adaptée. P> p>
Ce n'est pas possible dans SQL Server, vous pouvez insérer les résultats dans une table Temp, puis une requête supplémentaire que ou vous pouvez utiliser openquery code> mais ceci Nécessite de la configuration d'un serveur lié, le SQL est P>
SELECT * FROM (ThisServer, 'Database.Schema.ProcedureName <params>')
Vous n'avez plus besoin de répéter les colonnes dans la partie "INSERT dans", SQL remplira la table sans les spécifier explicitement.
Essayez ceci
Modifier 'Retour' ' P>
delete from batchno_seq; insert into batchno_seq default values; select @batchno_seq= batchno_seq_no from batchno_seq SELECT @batchno_seq
Mon approche
Le meilleur article (à mon avis) sur toutes les méthodes possibles de partage de données entre les procédures stockées dans SQL Server Vous pouvez trouver ici: http://www.sommarskog.se/share_data.html p>
Je dois manquer quelque chose.
Étant donné que votre procédure stockée ne renvoie pas un ensemble de résultats, et renvoie plutôt un entier, à l'aide de la fonctionnalité de retour des Procs stockés, vous ne pouvez tout simplement pas insérer dans une table (puisqu'il n'y a pas de Tout ensemble de résultats revenant, du tout). P>
Mais vous pouvez (en supposant que cela se produise itérativement, et non sur un ensemble) stocke simplement la valeur de retour dans une variable locale et insérez la valeur de la variable. Dans n'importe quelle table est nécessaire. P>
Toutefois, si vous souhaitez simplement renvoyer la valeur dans les résultats d'une fenêtre de requête dans SSMS, effectuez l'insertion et la sélection sont surchargées.
Il me semble que cela suffirait (dans une fenêtre de requête): p> S'il s'agit de la base de la base, veuillez fournir le DDL pour "Batchno_seq", peut-être que je peux être d'une meilleure aide de cette façon. p> acclamations! p> p>
FTR, je suis d'accord avec @gordonlinoff, dans ce cas, votre "procédure stockée par lots" serait implémentée beaucoup plus simple en tant que Scalar UDF (à nouveau, en supposant que cela n'agit pas sur un ensemble)
Non ce n'est pas possible. Vous devez utiliser des fonctions si c'est une exigence.
@Nenadzivkovic, j'ai besoin de supprimer et d'insérer cependant, qui de ce que j'ai lu n'est pas possible.
Ou vous pouvez utiliser «Solution de contournement» en créant une table Temp, insérant des résultats de SP dans celui-ci, puis choisissez dans la table TEMP.
Supprimer et insérer quoi et où? Veuillez fournir plus d'informations et d'exemples dans la question, et peut-être que nous pouvons plus facilement venir à une solution.
Quelle erreur recevez-vous dans votre exemple? Comment ça ne marche-t-il pas?