Dites que j'ai cette requête géniale dans ma procédure stockée.Comment stocker les résultats d'une requête dans une procédure stockée
Select * from Temp
Comment pourrais-je stocker les résultats de ce dans la même procédure stockée puisque dans la ligne suivante, je veux passer par là dans une boucle (je ne sais pas comment faire encore non plus) et faire des choses à lui.
J'ai trouvé quelque chose comme ça
DECLARE total_count INT DEFAULT 0
SET total_count = 10;
mais il semble que cela ne fonctionne pas.
Msg 156, Level 15, State 1, Procedure csp_test, Line 3
Incorrect syntax near the keyword 'DECLARE'.
Msg 155, Level 15, State 2, Procedure csp_test, Line 3
'INT' is not a recognized CURSOR option.
Modifier
Ok ce que je vais jusqu'à présent. Je n'ai aucune idée de ce que je fais donc je ne sais pas si c'est à distance.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[csp_test]
AS
BEGIN
declare @temp2 table (
idx int identity(1,1),
field varchar(max))
insert into @temp2 (field)
Select * from temp
END
donc ce que je pense que ce fait est une variable il fait table insère alors tous mes résultats de la table temporaire dans cette variable de table temp2. Ensuite, je boucle à travers eux ou quelque chose comme ça?
Je ne sais pas si ce que j'ai est déjà juste. je trouve cela et ne sais pas si ce serait la prochaine étape
declare @counter int
set @counter = 1
while @counter < (select max(idx) from @temp)
begin
-- do what you want with the rows here
set @counter = @counter + 1
end
Temp script de table
USE [test]
GO
/****** Object: Table [dbo].[temp] Script Date: 07/06/2010 19:20:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[temp](
[id] [int] IDENTITY(1,1) NOT NULL,
[temp] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_temp] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
comme john écrire: vous devez déclarer la table et enregistrer des données dans int vous pouvez aussi check this http://odetocode.com/code/365.aspx –
Donc je dois faire une table interne puis m'en débarrasser? Votre première façon de ne pas le laisser tomber. Est-ce que ça tombe automatiquement? Comment faire une boucle sur les résultats s'il y a une autre table? – chobo2
Les variables de tableau n'ont pas besoin d'être supprimées ou supprimées. Leurs ressources sont automatiquement nettoyées si elles sont créées dans la même procédure stockée (en sql2008 elles peuvent être passées en arguments, et je ne sais pas comment les ressources sont gérées ici). Et pour boucler déclarer un curseur comme ceci. DECLARE nom_curseur CURSOR POUR select_statement_using_temporary_table - Référence complète ici: http://technet.microsoft.com/es-es/library/ms180169.aspx – user347594