gpt4 book ai didi

sql - SQL语法错误,语法不正确?

转载 作者:行者123 更新时间:2023-12-03 08:30:21 27 4
gpt4 key购买 nike

每次运行查询时,都会收到语法错误。问题是,当我在发生错误的行中运行代码时,该代码运行了该部分,所以我不知道为什么会收到以下错误消息。

Msg 102, Level 15, State 1, Line 1  
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

我的代码:
declare @Source_Database_Name AS varchar(255) = 'dbo.Production2';
declare @Destination_Database_Name AS varchar(255) = 'c365online_script1';

declare @Company_Id int = 1 --declare a companyid

CREATE TABLE #CompanyID1 (ID bigint)

INSERT INTO #CompanyID1(ID)
VALUES('1')

--FIRST CURSOR LOOP THROUGH THIS TABLE
CREATE TABLE #TableList (


processorder int,
tablename NVARCHAR(100)
)
INSERT INTO #TableList (processorder, tablename )
VALUES
(1, 'tCompany');

DECLARE @firstLoop BIT
--SET @firstLoop = true
DECLARE @Counter INT -- counting variable

----------- Cursor specific code starts here ------------
-- company cursor
declare copyCompanyDataCursor CURSOR fast_forward FOR
SELECT ID from #CompanyID1;

open copyCompanyDataCursor
fetch next from copyCompanyDataCursor into @Company_Id;

WHILE @@FETCH_STATUS = 0
BEGIN

declare @processorder int;
declare @tablename varchar(500);
-- table cursor

declare copyTableDataCursor CURSOR fast_forward FOR
SELECT processorder,tablename from #TableList order by processorder;

open copyTableDataCursor
fetch next from copyTableDataCursor into @processorder, @tablename;

WHILE @@FETCH_STATUS = 0
BEGIN
SET IDENTITY_INSERT [c365online_script1].[dbo].[tCompany] ON

-- Does the table have a companyID column? if statement checking for company id
IF EXISTS(SELECT * FROM Production2.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME='CompanyID' and TABLE_NAME='tProperty')
BEGIN
declare @debug varchar(max)
EXEC('INSERT' + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ' WHERE ' + @Source_Database_Name + '.dbo.' + @tablename + '.CompanyID = ' + @Company_Id + ')')
END
ELSE
BEGIN
Print 'No'
END
-- if yes then copy data based on companyID in cursor



-- if no check if this is the first time through company loop and copy all data
-- if @firstloop company exists look at information schema

-- insert into c365online_script1.dbo.tCompany(selec
EXEC('INSERT ' + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ')')

-- company logic


SET IDENTITY_INSERT [c365online_script1].[dbo].[tCompany] OFF

FETCH NEXT FROM copyTableDataCursor into @processorder,@tablename;
END

close copyTableDataCursor;

Deallocate copyTableDataCursor;

--INSERT INTO c365online_script1.dbo.tCompany
--SELECT *
--FROM production2.tCompany
--WHERE ISNULL(CompanyID, 0) = 0 -- copy all data where id is equal to zero
--@Destination_Database_Name

--
--EXEC(INSERT + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ' WHERE ' + @Source_Database_Name + '.dbo.' + @tablename + '.CompanyID = ' + @Company_Id + ')')
--SET @firstLoop = false;
FETCH NEXT FROM copyCompanyDataCursor into @Company_Id;
END

CLOSE copyCompanyDataCursor;
DEALLOCATE copyCompanyDataCursor;

最佳答案

这些行的末尾看起来像是多余的括号:

EXEC('INSERT'  + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ' WHERE ' + @Source_Database_Name + '.dbo.' + @tablename + '.CompanyID = ' + @Company_Id + ')')   

EXEC('INSERT ' + @Destination_Database_Name + '.dbo.' + @tablename + ' SELECT * FROM ' + @Source_Database_Name + '.dbo.' + @tablename + ')')

引号中有一个右括号,但没有与之对应的左括号。

关于sql - SQL语法错误,语法不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com