Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11240|Atbildi: 0

[Avots] Parastos SQL paziņojumus var izpildīt ar exec

[Kopēt saiti]
Publicēts 09.02.2015 14:44:30 | | |
1: Parastos SQL paziņojumus var izpildīt ar exec

Atlasiet * no tabulasNosaukums
exec('atlasīt * no tabulasNosaukums')
exec sp_executesql N'select * from tableName' -- Ņemiet vērā, ka pirms virknes ir jāpievieno N

2: Izmantojot lauku nosaukumus, tabulu nosaukumus, datu bāzu nosaukumus utt. Kā mainīgos, jāizmanto dinamiskais SQL

deklarēt @fname varchar(20)
set @fname = 'FiledName'
Atlasiet @fname no tableName -- Kļūda, netiek parādīta kļūda, bet rezultāts ir fiksēta vērtība FiledName, kas nav tas, ko vēlaties.
exec('select ' + @fname + ' from tableName') -- ņemiet vērā, ka atstarpe tiek pievienota vienpēdiņas malā pirms un pēc plusa zīmes

Protams, jūs varat arī mainīt virkni mainīgā formā
deklarēt @fname varchar(20)
set @fname = 'FiledName' --Iestatiet lauka nosaukumu

deklarēt @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
exec(@s) -- panākumi
exec sp_executesql @s -- Šis teikums ziņos par kļūdu

deklarēt @s Nvarchar(1000) -- ņemiet vērā, ka šeit tas ir mainīts uz nvarchar(1000).
set @s = 'select ' + @fname + ' from tableName'
exec(@s) -- panākumi
exec sp_executesql @s -- šis teikums ir pareizs

3. Izejas parametri
Deklarēt @num int, @sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)

--kā es varu ievietot izpildes rezultātu mainīgajā?

Deklarēt @num int, @sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
Atlasiet @num


1: Parastos SQL paziņojumus var izpildīt ar Exec Piemērs: Atlasiet * no tableName
                Exec('atlasīt * no tabulasNosaukums')
                Exec sp_executesql N'select * from tableName' -- Ņemiet vērā, ka pirms virknes ir jāpievieno N

2: Izmantojot lauku nosaukumus, tabulu nosaukumus, datu bāzu nosaukumus utt. Kā mainīgos, jāizmanto dinamiskais SQL

    Kļūda: declare @fname varchar(20)
                set @fname = 'FiledName'
                Atlasiet @fname no tableName -- Kļūda, netiek parādīta kļūda, bet rezultāts ir fiksēta vērtība FiledName, kas nav tas, ko vēlaties.
    Pareizi: Exec('select ' + @fname + ' from tableName') -- ievērojiet atstarpes pievienošanu vienpēdiņas malā pirms un pēc pluszīmes

    Protams, jūs varat arī mainīt virkni mainīgā formā
                deklarēt @fname varchar(20)
                set @fname = 'FiledName' --Iestatiet lauka nosaukumu

                deklarēt @s varchar(1000)
                set @s = 'select ' + @fname + ' from tableName'
                Exec(@s) -- Panākumi
                exec sp_executesql @s -- Šis teikums ziņos par kļūdu

              --Piezīme: @s parametram jābūt ntext vai nchar vai nvarchar tipa, declare @s varchar(1000) ir jāmaina, lai deklarētu @s nvarchar(1000)



               Šādi:
                deklarēt @s Nvarchar(1000) -- ņemiet vērā, ka šeit tas ir mainīts uz nvarchar(1000).

                set @fname = 'FiledName' --Iestatiet lauka nosaukumu
                set @s = 'select ' + @fname + ' from tableName'
                Exec(@s) -- Panākumi   
                exec sp_executesql @s -- šis teikums ir pareizs

3. Ievades vai izejas parametri

      (1) Ievades parametri:
          declare @QueryString nvarchar(1000) -- dinamiskā vaicājuma priekšraksta mainīgais (piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
          deklarēt @paramstring nvarchar(200) - iestatiet parametru virkni dinamiskajā priekšrakstā (piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
          deklarēt @input_id int - definē dinamiskajā paziņojumā nododamo parametru vērtību

          iestatiet @QueryString='select * from tablename, kur id=@id' --id ir lauka nosaukums, @id ir parametrs, kas jānodod
          set @paramstring='@id int' -- Iestata virkni, kas definē dinamiskā priekšraksta parametrus
          iestatiet @input_id =1 -- Iestatiet dinamiskajā paziņojumā nododamā parametra vērtību uz 1
          exec sp_executesql @querystring,@paramstring,@id=@input_id
          Ja ir vairāki parametri:
          declare @QueryString nvarchar(1000) -- dinamiskā vaicājuma priekšraksta mainīgais (piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
          deklarēt @paramstring nvarchar(200) - iestatiet parametru virkni dinamiskajā priekšrakstā (piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
          deklarēt @input_id int - definē parametra vērtību, kas jānodod dinamiskajā paziņojumā, 1. parametrs
          declare @input_name varchar(20) - definē argumenta vērtību, kas jānodod dinamiskajā priekšrakstā, parametrs 2

          iestatiet @QueryString='atlasiet * no tabulas nosaukuma, kur id=@id un nosaukums=@name' --id un nosaukums ir lauku nosaukumi, un @id un @name ir parametri, kas jānodod
          set @paramstring='@id int,@name varchar(20)' -- Iestatiet dinamiskā priekšraksta parametru definīcijas virkni, atdalot ar ","
          iestatiet @input_id =1 -- Iestatiet dinamiskajā paziņojumā nododamā parametra vērtību uz 1
          set @input_name='Zhang San' --Iestatiet dinamiskajā paziņojumā nododamā parametra vērtību uz 'Zhang San'
          exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name -- Atzīmējiet argumentu secību
     (2) Izejas parametri
             Deklarēt @num int, @sqls nvarchar(4000)
            set @sqls='select count(*) from tableName'
            exec(@sqls)
        --kā es varu ievietot izpildes rezultātu mainīgajā?         
        declare @QueryString nvarchar(1000) -- dinamiskā vaicājuma nosaukuma mainīgais (Piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
        deklarēt @paramstring nvarchar(200) - iestatiet parametru virkni dinamiskajā priekšrakstā (piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
        deklarēt @output_result int - vaicājuma rezultāts tiek piešķirts @output_result

        set @QueryString='select @totalcount=count(*) from tablename' --@totalcount ir izvades parametrs
        set @paramstring='@totalcount int output' --Iestatiet virkni, ko definē dinamiskā paziņojuma parametri, atdalot ar ","
        exec sp_executesql @querystring,@paramstring,@totalcount=@output_result izvade
        Atlasiet @output_result
        Protams, ievades un izejas parametrus var izmantot kopā, lai jūs to varētu izmēģināt pats.
        Turklāt, ja vēlaties izvadīt dinamiskā paziņojuma vaicājuma rezultātu kopu, es domāju tikai par šādu pagaidu tabulu izmantošanas metodi, es nezinu, vai jums ir labāks veids.
        IF object_id('[tempdb].[ dbo].#tmp') NAV NULLE -- Nosakiet, vai pagaidu tabula #tmp pastāv, un, ja tā pastāv, izdzēsiet to
            Nomest tabulas #tmp
        atlasiet * #tmp no tabulas nosaukuma, kur 1=2 -- Izveidojiet pagaidu tabulas #tmp ar tādu pašu struktūru kā tabulas nosaukums

        declare @QueryString nvarchar(1000) -- dinamiskā vaicājuma nosaukuma mainīgais (Piezīme: jābūt ntext vai nchar nvarchar tipam, nevis varchar tipam)
        iestatīt @QueryString='atlasīt * no tabulas nosaukuma'
        ievietot #tmp(lauks1,lauks2,...) exec(@querystirng)




Iepriekšējo:SQL metode tabulas datu iztukšošanai
Nākamo:Pēdējo dienu SQL piezīmes
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com