home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.ms-sqlserver      Notorious Rube Goldberg contraption      19,505 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 18,674 of 19,505   
   Gene Wirchenko to All   
   Re: Newbie question: how to use vars in    
   18 Jun 12 13:55:50   
   
   XPost: microsoft.public.sqlserver, microsoft.public.sqlserver.misc,   
   microsoft.public.sqlserver.programming   
   From: genew@ocis.net   
      
   On Mon, 18 Jun 2012 20:34:59 +0100, "Mojo"    
   wrote:   
      
   >Apols if this a noddy question, but I just can't fathom it!!! :0)   
   >   
   >I use a long SQL script (DDL ??) to drop, create and populate my db each   
   >time (rather than a backup) and initially the DB needs key values inserted   
   >into it.   
      
        I was asking about this recently, too, in   
   comp.databases.ms-sqlserver and microsoft.public.sqlserver.programming   
   (two of the four newsgroups you posted to).  I wanted to do about the   
   same as you.   
      
   >At the mo, I try to remember to scroll up and down the script (quite long   
   >now) to populate it with the required values for the given time, but I much   
   >rather do what I used to do in MySQL, which was to put varaibles at the very   
   >top of my script so that the values entered at the top then reflect further   
   >down, eg   
   >   
   >Line 1 :    SET @MyYear= 2012;   
   >...   
   >...   
   >...   
   >Line 304: .INSERT ... .... ....., @MyYear, ... ....   
   >   
   >I've tried this, but it appears as though my GO statements stop it from   
   >working.  I'm probably wrong, but this seems to suggest that I need to set   
   >the var about 1 or 2 rows above the actual INSERT, which defeats my purpose.   
      
        A GO statement terminates a batch.  A variable's lifetime is that   
   of the batch that it is declared in.   
      
   >Is there a way round this?   
      
        I was defining stored procedures which have to be delimited by GO   
   statements (or BOF/EOF) and following each with its test.  Any   
   variables set at the beginning would be blown away by the first GO,   
   and I had plenty of them.   
      
        You could populate a temp table at the start of your script and   
   interrogate it later as needed.  Temp tables have a lifetime of the   
   session (if not dropped sooner).   
      
        Population:   
             create table #UnkillableVariables   
              (   
              RoughAndToughVariable int   
              ...   
              );   
             insert into #UnkillableVariables   
              (   
              RoughAndToughVariable int   
              ...   
              )   
             values   
              (   
              2012   
              ...   
              );   
      
        Interrogation:   
             declare @RoughAndToughVariable int;   
             select @RoughAndToughVariable=RoughAndToughVariable   
             from #UnkillableVariables;   
   then use it in that batch.   
      
        The definition part is lengthy, but the use part is not.  I did   
   not bother, but I might if I revisit this and the script has a long   
   lifetime.   
      
   Sincerely,   
      
   Gene Wrichenko   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca