卿、 SQLカーソルは一時テーブルに挿入し、Temparory表
は、私は、その一時テーブルから値を取得する一時表&に値を挿入する@AllRecordsとしてカーソルを使用してSQLクエリを構築していからのフェッチします。しかし、テーブルから値を取得しているときにエラーが表示されます(エラー:@AllRecordsの不正な構文です)。以下は私のコードです: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
は、あなたが '持っています関連する 'END'を持たないBEGIN' – HoneyBadger
これは、カーソルの不要な使用の最良の例です。息を止めて息を呑み、簡単なINSERT..SELECTステートメントとして書き直してください。私はROW_NUMBER()またはIDENTITY()を使用して@tNoを取得すると言いますが、私はポイントがないので、それ以上使用しないでください。 –