Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
delta1186
Starting Member
10 Posts |
Posted - 2007-11-07 : 12:44:05
|
Comment/QuestionHopefully someone can shed some light on this issue for me. I have a stored procedure that uses a declared variable @tblTemp which this table is used to loop through a comma delimited string. This works fine. However, when I try and reference this @tblTemp later in the procedure in an INNER JOIN I get the error below, and the procedure does not get created even though it says it does. What am I missing? Any help would be greatly appreciated. Thanks!Query AnalyzerServer: Msg 137, Level 15, State 2, Procedure ImportContactsFromCRM, Line 53Must declare the variable '@tblTemp'.Cannot add rows to sysdepends for the current stored procedure because it depends on the missing object 'ImportContactsFromCRM'. The stored procedure will still be created.Stored ProcedureCREATE PROCEDURE ImportContactsFromCRM(@intEstimateID integer,@intBidPackageID tinyint,@ItemIDs varchar(1000),@strUser varchar(25))ASDECLARE @Count1 smallintDECLARE @Count2 smallintDECLARE @Status tinyintSELECT @Status=intBidderStatusID FROM LU_tblStatus_Bidder WHERE strBidderStatus='No Reply'DECLARE @tblTemp TABLE( ID integer, LocID integer)DECLARE @Delimeter char(1) SET @Delimeter = ','DECLARE @LocID integerDECLARE @ID integerDECLARE @StartPos int, @Length int WHILE LEN(@ItemIDs) > 0BEGIN SET @StartPos = CHARINDEX(@Delimeter, @ItemIDs) IF @StartPos < 0 SET @StartPos = 0 SET @Length = LEN(@ItemIDs) - @StartPos - 1 IF @Length < 0 SET @Length = 0 IF @StartPos > 0 BEGIN SET @ID = SUBSTRING(@ItemIDs, 1, @StartPos - 1) SET @ItemIDs = SUBSTRING(@ItemIDs, @StartPos + 1,LEN(@ItemIDs) - @StartPos) END ELSE BEGIN SET @ID = @ItemIDs SET @ItemIDs = '' END SELECT @LocID=intLocationID FROM tblContact WHERE intContactID=@ID INSERT @tblTemp (ID,LocID) VALUES(@ID,@LocID)ENDBEGIN SELECT @Count1=COUNT(intCallListID) FROM tblCallList WHERE intEstimateID=@intEstimateID AND intBidPackageID=@intBidPackageID INSERT INTO tblCallList (intEstimateID,intBidPackageID,intBidderID,intBidderLocID,intBidderStatusID) SELECT @intEstimateID,@intBidPackageID,ID,LocID,@Status FROM @tblTemp--this is what is causing the issue-------------------- INNER JOIN tblLocation ON @tblTemp.LocID = tblLocation.intLocationID-------------------------------------------------------- WHERE tblLocation.intCompanyID NOT IN ( SELECT tblLocation.intCompanyID FROM tblCallList INNER JOIN tblLocation ON tblCallList.intBidderLocID = tblLocation.intLocationID WHERE intEstimateID=@intEstimateID AND intBidPackageID=@intBidPackageID )--old where statement which works, but does not use the @tblTemp --WHERE ID NOT IN ( --SELECT intBidderID FROM tblCallList --WHERE intEstimateID=@intEstimateID AND intBidPackageID=@intBidPackageID------------------------------------------ SELECT @Count2=COUNT(intCallListID) FROM tblCallList WHERE intEstimateID=@intEstimateID AND intBidPackageID=@intBidPackageID IF @Count2>@Count1 BEGIN DECLARE @strComment varchar(150) SET @strComment = 'Bidder added to call list. (' + @strUser + ')' INSERT INTO tblCallListLog(intCallListID,strComments) SELECT intCallListID,@strComment FROM tblCallList WHERE intCallListID IN ( SELECT intCallListID FROM tblCallList WHERE intEstimateID=@intEstimateID AND intBidPackageID=@intBidPackageID) AND intCallListID NOT IN (SELECT intCallListID FROM tblCallListLog) RETURN 0 END ELSE BEGIN RETURN 1 ENDENDGO |
|
dinakar
Master Smack Fu Yak Hacker
2507 Posts |
Posted - 2007-11-07 : 12:50:35
|
Your BEGIN/ENDs dont match.. Reformat your code with proper indentation and you can see it..Dinakar Nethi************************Life is short. Enjoy it.************************http://weblogs.sqlteam.com/dinakar/ |
|
|
anonymous1
Posting Yak Master
185 Posts |
Posted - 2007-11-07 : 12:56:08
|
you have to create a table alias to use a qualified reference...FROM @tblTemp AS MY_TABLEINNER JOIN tblLocation ON MY_TABLE.LocID = tblLocation.intLocationID |
|
|
delta1186
Starting Member
10 Posts |
Posted - 2007-11-07 : 13:10:45
|
Man I love this site! Thank you anonymous1! I would have never figured that one out. BTW, dinaker thanks for the comment but my BEGIN and END statements are correct and they are indented in my code. Unforturnately, when you post on this forum it does not retain your identations from your SQL script. |
|
|
|
|
|
|
|