Monsieur,SQL curseur à insérer dans le tableau temporaire et rapportez de Temparory Tableau
J'ai construire une requête SQL à l'aide du curseur comme @AllRecords pour insérer des valeurs dans le tableau & temporaire puis Fetch les valeurs de cette table temporaire. Mais il me montre une erreur lors de la dernière déclaration lorsque je récupère des valeurs de la table (Erreur: syntaxe incorrecte près de @AllRecords). Ci-dessous mon code:
DECLARE @ColName varchar(20)=null,
@Query varchar(MAX)=null,
@DepartmentName varchar(50)=null,
@deptt_code varchar(4)=null,
@DistrictId varchar(4)='0001',
@Deptt_Id char(4)=null,
@stYear varchar(4)=null,
@cYear varchar(4)=null,
@yr varchar(9)='2017-2018',
@tno int
BEGIN
set @stYear = SUBSTRING(@yr,0,5)
set @cYear = SUBSTRING(@yr,6,4)
--DECLARE & SET COUNTER
DECLARE @counter int
SET @counter = 1
--CREATE DYNAMIC TABLE WITH COLs
DECLARE @AllRecords table
(
department_name varchar(50),
project_name varchar(100),
department_code varchar(4)
)
--*** Declare Cursor
DECLARE cur_FetchDepartmentName CURSOR READ_ONLY
FOR
select deptt_code,deptt_name+'('+ RTRIM(LTRIM(deptt_short))+')' as dept_name from m_Department
where deptt_code in (select distinct department_code from t_Project_Details where [email protected]
and [email protected])
OPEN cur_FetchDepartmetName
fetch next from cur_FetchDepartmetName into
@deptt_code, @DepartmentName
--LOOP UNTIL RECORDS ARE AVAILABLE
while @@FETCH_STATUS=0
BEGIN
if(@tno=0)
BEGIN
set @tno=1
insert into @AllRecords values(@DepartmentName,@deptt_code)
fetch next from cur_FetchDepartmetName into
@deptt_code,@DepartmentName
END
else
BEGIN
set @[email protected]+1
insert into @AllRecords values(@DepartmentName,@deptt_code)
fetch next from cur_FetchDepartmetName into
@deptt_code,@DepartmentName
END
END
--CLOSE CURSOR
CLOSE cur_FetchDepartmetName
DEALLOCATE cur_FetchDepartmetName
select department_name, department_code from @AllRecords
Si vous définissez vos premières variables, vous avez ' BEGIN' qui n'a pas de 'END' associé – HoneyBadger
Ceci doit être le meilleur exemple d'utilisation inutile des curseurs. S'il vous plaît, arrêtez, respirez et réécrivez ceci comme une simple instruction INSERT..SELECT. Je dirais d'utiliser ROW_NUMBER() ou IDENTITY() pour obtenir @tNo, mais je ne vois pas de point, vous ne les utilisez plus? –