| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Hjælp til at skrive en sætning i en Stored~ Fra : oz | 
  Dato :  16-12-01 19:13 |  
  |   
            Hej NG
 
 Jeg har nu forsøgt at læse utallige bøger om SP men der er blandt mange ting
 en ting jeg ikke helt forstår???
 
 Hvorfor kan jeg ikke bruge IN funktionen i en SP, jeg kan bruge LIKE, OR,
 AND og BETWEEN men ikke IN den siger der er en syntax fejl...
 
 Er der nogen der ved hvorfor?
 
 Syntaxe fejlen opstår når jeg vil gemme min SP, dvs. det kan ikke engang
 være fordi den får forkerte data....
 
 WHERE
 News.NewsID IN '(' + @NewsID + ')' -- Giver syntaxe fejl
 --News.NewsID IN @NewsID virker heller ikke giver også syntaxe fejl.
 
 
 Håber der er nogen der kan hjælpe mig med det =)
 
 På forhånd tak
 
 Oz
 
 
  
            
             |   |   
            
        
 
            
         
           Peter Lykkegaard (16-12-2001) 
         
	
            | Kommentar Fra : Peter Lykkegaard | 
  Dato :  16-12-01 20:54 |  
  |   
            
 "oz" <gonzo@strike-team.com> wrote in message
 news:9vio6t$q7m$1@sunsite.dk...
 
 > WHERE
 > News.NewsID IN '(' + @NewsID + ')' -- Giver syntaxe fejl
 > --News.NewsID IN @NewsID virker heller ikke giver også syntaxe fejl.
 >
 Syntaksen er
 
 WHERE News.NewID IN (1, 2, 3)
 
 Eller
 WHERE News.NewID IN ('A', 'B', 'C')
 
 mvh/Peter Lykkegaard
 
 
 
  
            
             |   |   
            
        
 
            
         
           oz (16-12-2001) 
         
	
            | Kommentar Fra : oz | 
  Dato :  16-12-01 21:17 |  
  |   
            
 "Peter Lykkegaard" <polonline@hotmail.com> skrev:
 
 > WHERE News.NewID IN (1, 2, 3)
 >
 > Eller
 > WHERE News.NewID IN ('A', 'B', 'C')
 
 Hej Peter
 
 Ja jeg er med på at syntaksen ser sådanne ud, men jeg har nok ikke forklaret
 mig godt nok..
 
 Hos mig drejer det sig om en SP som modtager parametre fra en ASP side for
 at skabe en dynamisk forespørgsel.
 
 Med andre ord indeholder @NewsID en variabel som kunne være =
 ('x','y','z'......).
 
 Håber at du kan forstå mit dilemma s`?
 
 Oz
 
 
  
            
             |   |   
            
        
 
            
         
            Klaus Ambrass (17-12-2001) 
         
	
            | Kommentar Fra : Klaus Ambrass | 
  Dato :  17-12-01 08:57 |  
  |   
            "oz" <gonzo@strike-team.com> wrote in news:9vivfc$dvp$1@sunsite.dk:
 
 > Hos mig drejer det sig om en SP som modtager parametre fra en ASP side
 > for at skabe en dynamisk forespørgsel.
 > 
 > Med andre ord indeholder @NewsID en variabel som kunne være =
 > ('x','y','z'......).
 > 
 > Håber at du kan forstå mit dilemma s`?
 > 
 > Oz
 
 
 Hej Oz,
 
 hvis din @newsID="('x','y','z'...)" så skal du bare fjerne '(' og ')' fra din 
 oprindelige kode.
 
 /Klaus
 
 
 
 -- 
  
            
             |   |   
            
        
 
            
         
             oz (17-12-2001) 
         
	
            | Kommentar Fra : oz | 
  Dato :  17-12-01 15:48 |  
  |   
            
 "Klaus Ambrass" <ambrass@vip.cybercity.dk> skrev
 
 > hvis din @newsID="('x','y','z'...)" så skal du bare fjerne '(' og ')' fra
 din
 > oprindelige kode.
 
 Tak for dit svar, men jeg tror vi taler forbi hinanden...
 
 Problemet er ikke syntaksen af IN sætningen den er jeg med på, tror jeg =).
 Men mit problem er at den ikke anerkender IN i min SP, den siger at der er
 en syntakse fejl i nedenstående eksempel og derfor kan jeg ikke gemme min
 SP, så det er ikke variablen (@NewsID) men syntaksen med IN der er forkert,
 ved du hvorfor?
 
 Dette giver mig et syntakse problem hvor jeg ikke kan gemme min SP
 WHERE
 NewsID IN @NewsID      -- hvor @NewsID indeholder en variabel (x,y,z.....)
 eller ('x','y','z'......)
 
 Håber at jeg fik forklaret mig rigtigt denne gang...
 
 Oz
 
 
  
            
             |   |   
            
        
 
            
         
              oz (17-12-2001) 
         
	
            | Kommentar Fra : oz | 
  Dato :  17-12-01 20:39 |  
  |   
            
 "oz" <gonzo@strike-team.com> skrev:
 
 > "Klaus Ambrass" <ambrass@vip.cybercity.dk> skrev
 >
 > > hvis din @newsID="('x','y','z'...)" så skal du bare fjerne '(' og ')'
 fra
 > din
 > > oprindelige kode.
 
 Du har da fuldstændig ret i det du skriver, beklager jeg ikke så det før jeg
 skrev det andet indlæg.... Nogle gange skal jeg lige helt forstå det skrevne
 inden jeg svarer sorry =)
 
 Yderlige ser jeg til min gru at jeg har lavet endnu en fejl i mit indlæg og
 det er, at det ikke drejer sig om VARCHAR's ('x','y','z',...) værdier men
 INT værdier i stedet ('8','23','44', osv....)
 
 Jeg ser en problematik i at overføre ('8','23','44', osv....) som integer da
 den jo ikke er en int værdi, den eneste mulighed jeg ser er at overføre
 ('8','23','44', osv....) som en VARCHAR, men det vil igen ikke anerkendes af
 Databasen da den forventer en int værdi...
 
 Der må da være en løsning på det problem =(  Ellers må jeg jo lave en OR
 funktion i stedet for, men den er jo ikke så hurtig som IN, men det må jeg
 evt. leve med eller har du evt. et godt forslag???
 
 Table News indeholder
 NewsID int
 Heading varchar (50)
 Teaser varchar (150)
 Body varchar (4000)
 Email varchar (50)
 Link varchar (50)
 
 Min SP er således ud
 CREATE PROCEDURE News
 
 @NewsID varchar (20) = NULL --Har jeg også forsøgt men giver denne fejl kan
 ikke converte varchar til int
 --@NewsID int = NULL --Har jeg også forsøgt men giver denne fejl kan ikke
 converte varchar til int
 
 AS
 
 SET NOCOUNT ON
 
 SELECT *
 FROM News
 WHERE
 News.NewsID IN (@NewsID) --Du havde ret ( ) omkring virker =)
 
 Min ASP side indeholder:
 Blandt andet en søge formular hvor man skal kunne vælge flerer Artikler på
 en gang disse overføres via ASP til @NewsID som varchar da jeg ikke syntes
 at kunne overføre dem på andre måder....
 
 Så nu håber jeg at jeg fik forklaret mig ordentligt og du kan forstå hvad
 jeg har problemer med....
 
 Oz
 
 
  
            
             |   |   
            
        
 
            
         
               Peter Lykkegaard (17-12-2001) 
         
	
            | Kommentar Fra : Peter Lykkegaard | 
  Dato :  17-12-01 20:42 |  
  |   
            
 "oz" <gonzo@strike-team.com> wrote in message
 news:9vlhk9$67g$1@sunsite.dk...
 >
 
 > Der må da være en løsning på det problem =(  Ellers må jeg jo lave en OR
 > funktion i stedet for, men den er jo ikke så hurtig som IN, men det må jeg
 > evt. leve med eller har du evt. et godt forslag???
 >
 Lav din SQL dynamisk og brug sp_ExecuteSQL
 
 Dvs
 
 Declare @Values VarChar(200)
 Declare @SQL NVarChar(200)
 
 Set @Values = '1, 2, 3, 4, 5'
 
 Set @SQL = N'Select * From MyTabel Where MyID IN (' + @Values + ')'
 
 Exec sp_ExecuteSQL @SQL
 
 Burde kunne gøre det
 
 mvh/Peter Lykkegaard
 
 
  
            
             |   |   
            
        
 
            
         
                oz (17-12-2001) 
         
	
            | Kommentar Fra : oz | 
  Dato :  17-12-01 22:01 |  
  |   
            "Peter Lykkegaard" <polonline@hotmail.com> skrev:
 
 > Lav din SQL dynamisk og brug sp_ExecuteSQL
 >
 > Dvs
 >
 > Declare @Values VarChar(200)
 > Declare @SQL NVarChar(200)
 >
 > Set @Values = '1, 2, 3, 4, 5'
 > Set @SQL = N'Select * From MyTabel Where MyID IN (' + @Values + ')'
 >
 > Exec sp_ExecuteSQL @SQL
 
 
 Jamen Peter det virker jo meget godt =), nu skal jeg bare bygge videre på
 den for at tilføje flere variabler for at give folk flere muligheder...
 
 Jeg har omskrevet dit eksempel lidt til dette:
 
 CREATE PROCEDURE Test_Search_2
 
 @NewsID VarChar (50)
 
 AS
 
 Declare @_NewsID VarChar(50)
 Declare @_SQL NVarChar(200)
 
 Set @_NewsID = @NewsID
 
 Set @_SQL = N'Select * From News Where NewsID IN (' + @_NewsID + ')'
 
 Exec sp_ExecuteSQL @_SQL
 
 For at lave den dynamsik, men det ligger sikkert underforstået i dit
 svar....
 
 Dog har jeg lige et tillægs spørgsmål!! Hvad nu hvis man vil se alle
 artikler??? Altså ikke bare '1, 2, 3, 4, 5, osv...' men alle?? Lad os sige
 der 10.000 artikler hvad så ?? Skriver jeg (1, 2, optil .... 10.000) nej
 vel... Er der en værdi jeg kan sætte ind for at vælge alle???
 
 Jeg har forsøgt med NULL men det duer ikke ej heller '' da der jo ikke er
 nogle NewsID med disse værdier, men hvilket tegn kan jeg bruge for at vælge
 alle???
 
 Håber du svarer =)
 
 Med venlig hilsen
 
 oz
 
 
  
            
             |   |   
            
        
 
            
         
                 Peter Lykkegaard (18-12-2001) 
         
	
            | Kommentar Fra : Peter Lykkegaard | 
  Dato :  18-12-01 15:42 |  
  |  
 
            "oz" <gonzo@strike-team.com> wrote in message
 news:9vlmdi$kd0$1@sunsite.dk...
 (...)
 > Set @_SQL = N'Select * From News Where NewsID IN (' + @_NewsID + ')'
 (...)
 >
 > Dog har jeg lige et tillægs spørgsmål!! Hvad nu hvis man vil se alle
 > artikler??? Altså ikke bare '1, 2, 3, 4, 5, osv...' men alle?? Lad os sige
 > der 10.000 artikler hvad så ?? Skriver jeg (1, 2, optil .... 10.000) nej
 > vel... Er der en værdi jeg kan sætte ind for at vælge alle???
 >
 Ja og nej....
 Du kan undlade din værdi   
If Len(@_NewsID) > 0
 Begin
     Set @_SQL = N'Select * From News Where NewsID IN (' + @_NewsID + ')'
 End
 Else
 Begin
     Set @_SQL = N'Select * From News
 End
 mvh/Peter Lykkegaard
            
              |   |   
            
        
 
            
         
                  oz (18-12-2001) 
         
	
            | Kommentar Fra : oz | 
  Dato :  18-12-01 22:39 |  
  |   
            "Peter Lykkegaard" <polonline@hotmail.com> skrev:
 
 > If Len(@_NewsID) > 0
 > Begin
 > Set @_SQL = N'Select * From News Where NewsID IN (' + @_NewsID + ')'
 > End
 > Else
 > Begin
 > Set @_SQL = N'Select * From News
 > End
 
 Jeps Peter
 Det er netop noget i den stil jeg leder efter..
 Tak for alt inputtet fra alle også dig, nu vil jeg gå i tænke boksen og
 prøve nogle forskellige tiltag...
 Jeg melder mig sikkert igen snart =)
 
 Oz
 
 
 
  
            
             |   |   
            
        
 
            
         
           Nikolaj Kolbe (18-12-2001) 
         
	
            | Kommentar Fra : Nikolaj Kolbe | 
  Dato :  18-12-01 00:28 |  
  |   
            
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |