이 오류가 발생합니다. 내가 뭘하고 있는지 하나의 테이블과 하나의 DB에서 데이터를 가져 와서 다른 DB와 테이블에 넣으려고합니다. 테이블은 정확히 동일하지 않습니다. FETCH 커서를 사용하고 있으므로 db1 테이블에서 첫 번째 행을 가져온 다음 각 열 값을 선언 된 변수에 배치합니다. 그런 다음 INSERT 문을 db2 테이블로 실행하고 다음 값을 가져옵니다. 모두 정상적으로 작동하기 때문에 정상적으로 작동하는 것 같지만 결국이 오류가 발생합니다.'table'키워드 근처에 잘못된 구문이 있습니다.
'table'키워드 근처에 구문이 잘못되었습니다.
전체 트랜잭션 문은 CATCH 블록에서 오류 처리식이있는 TRY/CATCH에 있습니다. 그 외에도 나는이 원인을 알지 못합니다. 도와주세요.
여기 어느 하나 개의 테이블을 선택하거나 다른 내로 삽입하는
가BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION
--TURN OFF ITENDITY COLUMNS
SET IDENTITY_INSERT [DB].[dbo].[TEST] ON
--TURN OFF ALL CONSTRAINTS
ALTER TABLE [DB].[dbo].[TEST] NOCHECK CONSTRAINT ALL
-- Insert statements for procedure here
DECLARE @ID int,
@DT datetime,
@PID varchar(10),
@AREA varchar(20)
DECLARE FETCH_TEST CURSOR FOR
SELECT [ID]
,[Date]
,[PID]
,[Area]
FROM [OLDDB].[dbo].[TEST] as db1
OPEN FETCH_TEST;
FETCH NEXT FROM FETCH_TEST INTO @ID,
@DT,
@PID,
@AREA
WHILE @@FETCH_STATUS = 0
BEGIN
--INSTER VALUES INTO THE TABLE
INSERT INTO [DB].[dbo].[TEST]
([ID]
,[DT]
,[PID]
,[AREA])
VALUES
(@ID,
@DT,
@PID,
@AREA)
FETCH NEXT FROM FETCH_TEST INTO
@ID,
@DT,
@PID,
@AREA,
END;
CLOSE FETCH_TEST;
DEALLOCATE FETCH_TEST;
-- If we reach here, success!
COMMIT
END TRY
BEGIN CATCH
-- Whoops, there was an error
IF @@TRANCOUNT > 0
ROLLBACK
-- Raise an error with the details of the exception
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
--TURN OFF ITENDITY COLUMNS
SET IDENTITY_INSERT [DB].[dbo].[TEST] OFF
--TURN ON ALL CONSTRAINTS
ALTER TABLE [DB].[dbo].[TEST] CHECK CONSTRAINT ALL
END
유효하지 않은 구문으로 코드를 게시하십시오. –
코드가 없다는 것이 문제입니다 (SP가없고 DDL이 없음). 당신이 그것을 가지고 있었다면, 당신은 그것을 게시했을 것이고, 그래서 당신은 그것을 가지고 있지 않을 것입니다. –
문제가있는 코드를 게시해야합니다. – Kev