Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 11240|Svare: 0

[Kilde] Vanlige SQL-setninger kan kjøres med exec

[Kopier lenke]
Publisert på 09.02.2015 14:44:30 | | |
1: Vanlige SQL-setninger kan kjøres med exec

Velg * fra tableName
exec('velg * fra tableName')
exec sp_executesql N'select * fra tableName' -- Merk at du må legge til N før strengen

2: Når man bruker feltnavn, tabellnavn, databasenavn osv. som variabler, må dynamisk SQL brukes

erklær @fname varchar(20)
sett @fname = 'FiledName'
Velg @fname fra tableName -- Feil, ingen feil vises, men resultatet er en fast verdi FiledName, som ikke er det du ønsker.
exec('select ' + @fname + ' fra tableName') – merk at det legges til et mellomrom på siden av det ene anførselstegnet før og etter plusstegnet

Selvfølgelig kan du også endre strengen til formen til en variabel
erklær @fname varchar(20)
sett @fname = 'FiledName' --Sett feltnavnet

erklær @s varchar(1000)
sett @s = 'velg ' + @fname + ' fra tableName'
exec(@s) – suksess
utøvende sp_executesql @s -- Denne setningen vil rapportere en feil

erklær @s Nvarchar(1000) – merk at det er endret til nvarchar(1000) her.
sett @s = 'velg ' + @fname + ' fra tableName'
exec(@s) – suksess
Exec sp_executesql @s – denne setningen er korrekt

3. Utgangsparametere
Erklær @num int, @sqls nvarchar(4000)
sett @sqls='velg antall(*) fra tableName'
exec(@sqls)

--hvordan legger jeg resultatet av executive execution inn i en variabel?

Erklær @num int, @sqls nvarchar(4000)
sett @sqls='velg @a=tell(*) fra tabellNavn '
exec sp_executesql @sqls, N'@a int output',@num output
Velg @num


1: Vanlige SQL-setninger kan kjøres med Exec Eksempel: Velg * fra tableName
                Exec('velg * fra tableName')
                Exec sp_executesql N'select * fra tableName' – Merk at du må legge til N før strengen

2: Når man bruker feltnavn, tabellnavn, databasenavn osv. som variabler, må dynamisk SQL brukes

    Feil: erklær @fname varchar(20)
                sett @fname = 'FiledName'
                Velg @fname fra tableName -- Feil, ingen feil vises, men resultatet er en fast verdi FiledName, som ikke er det du ønsker.
    Korrekt: Exec('select ' + @fname + ' fra tableName') – legg merke til at det legges til et mellomrom på siden av det ene anførselstegn før og etter plusstegnet

    Selvfølgelig kan du også endre strengen til formen til en variabel
                erklær @fname varchar(20)
                sett @fname = 'FiledName' --Sett feltnavnet

                erklær @s varchar(1000)
                sett @s = 'velg ' + @fname + ' fra tableName'
                Exec(@s) -- Suksess
                utøvende sp_executesql @s -- Denne setningen vil rapportere en feil

              --Merk: @s parameter må være av ntext-, nchar- eller nvarchar-typen, erklære @s varchar(1000) må endres til å deklarere @s nvarchar(1000)



               Som følger:
                erklær @s Nvarchar(1000) – merk at det er endret til nvarchar(1000) her.

                sett @fname = 'FiledName' --Sett feltnavnet
                sett @s = 'velg ' + @fname + ' fra tableName'
                Exec(@s) -- Suksess   
                Exec sp_executesql @s – denne setningen er korrekt

3. Inn- eller utgangsparametere

      (1) Inndataparametere:
          Deklarer @QueryString nvarchar(1000) – dynamisk spørringssetningsvariabel (merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
          Deklarer @paramstring nvarchar(200) – sett strengen av parametere i den dynamiske setningen (merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
          Deklarer @input_id int - definerer verdien av parameterne som skal sendes inn i den dynamiske setningen

          Sett @QueryString='velg * fra tabellnavn der ID=@id' --id er feltnavnet, @id er parameteren som skal sendes
          sett @paramstring='@id int' -- Setter strengen som definerer parameterne i den dynamiske setningen
          Sett @input_id =1 -- Sett verdien av parameteren som skal sendes i den dynamiske setningen til 1
          exec sp_executesql @querystring,@paramstring,@id=@input_id
          Hvis det er flere parametere:
          Deklarer @QueryString nvarchar(1000) – dynamisk spørringssetningsvariabel (merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
          Deklarer @paramstring nvarchar(200) – sett strengen av parametere i den dynamiske setningen (merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
          Declare @input_id int - definerer verdien av parameteren som skal sendes inn i den dynamiske setningen, parameter 1
          Deklarer @input_name varchar(20) - definerer verdien av argumentet som skal sendes inn i den dynamiske setningen, parameter 2

          Sett @QueryString='velg * fra tabellnavn hvor id=@id og name=@name' --id og navn er feltnavn, og @id og @name er parameterne som skal sendes
          sett @paramstring='@id int,@name varchar(20)' -- Sett strengen til definisjonen av parameterne i den dynamiske setningen, adskilt med ","
          Sett @input_id =1 -- Sett verdien av parameteren som skal sendes i den dynamiske setningen til 1
          sett @input_name='Zhang San' --Sett verdien av parameteren som skal sendes i den dynamiske setningen til 'Zhang San'
          exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name -- Legg merke til rekkefølgen på argumentene
     (2) Utgangsparametere
             Erklær @num int, @sqls nvarchar(4000)
            sett @sqls='velg antall(*) fra tableName'
            exec(@sqls)
        --hvordan legger jeg resultatet av executive execution inn i en variabel?         
        deklarer @QueryString nvarchar(1000) – dynamisk spørringsnavnvariabel (Merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
        Deklarer @paramstring nvarchar(200) – sett strengen av parametere i den dynamiske setningen (merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
        Deklarer @output_result INT – spørringsresultatet tilordnes @output_result

        sett @QueryString='velg @totalcount=tell(*) fra tabellnavn' --@totalcount er utgangsparameteren
        sett @paramstring='@totalcount int-utgang' --Sett strengen definert av parameterne i den dynamiske setningen, adskilt med ","
        exec sp_executesql @querystring,@paramstring,@totalcount=@output_result output
        velg @output_result
        Selvfølgelig kan input- og outputparametere brukes sammen, så du kan prøve det selv.
        I tillegg, hvis du vil gi ut resultatsettet fra en dynamisk setningsspørring, tenker jeg bare på følgende metode med å bruke midlertidige tabeller, jeg vet ikke om du har en bedre måte.
        HVIS object_id('[tempdb].[ dbo].#tmp') ER IKKE NULL -- Bestem om den midlertidige tabellen #tmp eksisterer, og hvis den gjør det, slett den
            Slippbord #tmp
        Velg * i #tmp fra tabellnavn hvor 1=2 -- Opprett en midlertidig tabell #tmp med samme struktur som tabellnavn

        deklarer @QueryString nvarchar(1000) – dynamisk spørringsnavnvariabel (Merk: må være ntext eller nchar nvarchar-type, ikke varchar-type)
        sett @QueryString='velg * fra tabellnavn '
        Sett inn i #tmp(Felt1,Felt2,...) Exec(@querystirng)




Foregående:SQL-metoden for tømming av tabelldata
Neste:SQL-notater fra de siste dagene
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com