2010-07-28 7 views
0

Voici le SQL:erreur dans SQL Server 2005 Syntaxe

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 

Voici l'erreur:

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

Toutes les idées?

Répondre

6

Rien à voir avec Go ou des points-virgules,

Vous mettez à jour Lending.ApplicationFee mais il n'apparaît pas dans la clause 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 

Je suppose que cela devrait être quelque chose comme

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

Et je pense que c'est là que se trouve l'erreur :) malgré tout le débat CREATE/INSERT/GO – SWeko

+0

+1 J'ai supprimé ma contribution à ce débat pour éviter d'assombrir la réponse. –

+0

Vous devriez obtenir un badge pour ça je pense! –

2

Au lieu de

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

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

vous pouvez simplement faire:

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

Cela va créer et peupler la table en une seule étape

+0

Ensuite, vous pas besoin d'un aller? – Scott

+0

Je ne pense pas. Et je ne pense pas que le problème soit dans le GO. GO n'est pas une commande SQL en soi, il indique simplement à l'outil d'envoyer le code à la base de données – SWeko