2010-07-28 2 views
0

Вот это SQL:Ошибка в SQL Server 2005 Синтаксис

CREATE TABLE dbo.TmpFeesToRules1(Name varchar, LookupId int) 

INSERT INTO dbo.TmpFeesToRules1(Name, LookupId) 
SELECT DISTINCT Name, 0 FROM Lending.Fee 
UNION SELECT DISTINCT Name, 0 FROM Lending.ApplicationFee 

INSERT INTO dbo.tblLookup (LookupType, LookupCode, LookupDesc, EditFlag, DeletedFlag, DefaultFlag) 
SELECT 'FEE_CODE', Name, Name, 0, 0, 0 
FROM dbo.TmpFeesToRules1 

UPDATE dbo.TmpFeesToRules1 
SET 
    LookupId = L.LookupID 
FROM 
    dbo.tblLookup L 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = L.LookupDesc 
WHERE 
    L.LookupType = 'FEE_CODE' 

CREATE TABLE dbo.TmpFeesToRules2(FeeId int, Name varchar) 

INSERT INTO dbo.TmpFeesToRules2(FeeId, Name) 
SELECT FeeId, Name FROM Lending.ApplicationFee 

GO 

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM dbo.TmpFeesToRules2 TT 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 

DROP TABLE dbo.TmpFeesToRules1 
DROP TABLE dbo.TmpFeesToRules2 

Здесь ошибка:

Invalid object name 'dbo.TmpFeesToRules2'.
Execute failed, return code: 1

Любые идеи?

ответ

6

ничего общего с Go или точкой с запятой,

Вы обновляете Lending.ApplicationFee, но он не отображается в предложении FROM.

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM dbo.TmpFeesToRules2 TT 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 

Я думаю, это должно быть что-то вроде

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM Lending.ApplicationFee join dbo.TmpFeesToRules2 TT ON <Some Condition> 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 
+0

И я думаю, что именно здесь ошибка: несмотря на все обсуждения CREATE/INSERT/GO – SWeko

+0

+1 У меня есть удалил мой вклад в эту дискуссию, чтобы избежать помутнения ответа. –

+0

Вы должны получить значок за это, я думаю! –

2

Вместо

CREATE TABLE dbo.TmpFeesToRules2(FeeId int, Name varchar) 

INSERT INTO dbo.TmpFeesToRules2(FeeId, Name) 
SELECT FeeId, Name FROM Lending.ApplicationFee 

вы можете просто сделать:

SELECT FeeId, Name 
INTO dbo.TmpFeesToRules2 
FROM Lending.ApplicationFee 

Это будет создавать и не заполнять таблицу в одном шаге

+0

Тогда вам не нужно будет идти? – Scott

+0

Я так не думаю. И я не думаю, что проблема в GO. GO не является командой SQL как таковой, она просто сообщает инструменту отправить код в базу данных. – SWeko

Смежные вопросы