2010-03-16 6 views
0

J'ai donc besoin de comprendre comment je peux obtenir une valeur de compte d'enregistrement et utiliser ce compte comme une nouvelle valeur à insérer dans une table.Requête SQL pour obtenir le compte dans un processus stocké

Ex: Dans Ma procédure stockée

@Count int

Qu'est-ce que je cherche

@Count pour égaler « select top (1) _fieldName de _someTable ordre par _fieldName Desc "

Enfin

insert en _newTable valeurs (_fieldName) (@count)

End

Je n'ai pas utiliser une variable, juste essayer de démontrer ce que im vraiment essayer de faire. Mes connaissances en SQL sont assez limitées donc pas de rigolade, ni de sourire! ;)

Répondre

0

Si vous utilisez SQL Server, alors pourquoi ne pas utiliser la @@ROWCOUNT

1

Dans SQL Server

 DECLARE @Count INT 
     SET @COUNT = SELECT COUNT(*) FROM SomeTable 
     insert into newTable (fieldName) values (@Count) 

    OR 


     INSERT INTO newTable (fieldName) 
     SELECT COUNT(*) FROM SomeTable 
0

Je ne sais pas quelle base de données, donc je vais écrire Sybasish.

declare @count int 
select @int = count (1) from ... the rest of your query 
insert another_table values (@count, 'other_field') 
1

Vous devez utiliser un INSERT-SELECT. C'est un INSERT qui utilise toutes les lignes renvoyées par SELECT comme valeurs à insérer. Donc, essayez quelque chose comme ceci (exemple de code SQL Server):

DECLARE @TableToCount table (fieldName varchar(5)) 
INSERT INTO @TableToCount VALUES ('A') 
INSERT INTO @TableToCount VALUES ('B') 
INSERT INTO @TableToCount VALUES ('C') 

DECLARE @TableToStore table (fieldName int) 

INSERT INTO @TableToStore 
    (fieldName) 
    SELECT 
     COUNT(fieldName) 
     FROM @TableToCount 

SELECT * FROM @TableToStore 

SORTIE:

fieldName 
----------- 
3 

(1 row(s) affected) 
0

Ce que je cherchais était l'identité de l'insert pendant le proc stocké. compléter cela il y a un certain temps, mais je voulais poster la réponse finale.

SELECT SCOPE_IDENTITY()

Questions connexes