2010-07-28 62 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 2010-07-28 13:07:30

+0

+1我已經刪除了我的意見,以避免混淆答案。 – 2010-07-28 13:14:23

+0

你應該得到我認爲的徽章! – 2010-07-28 13:15:35

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 2010-07-28 13:01:04

+0

我不這麼認爲。我認爲這個問題不在GO中。 GO本身不是SQL命令,它只是告訴工具將代碼發送到數據庫 – SWeko 2010-07-28 13:04:36