Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 11240|Válasz: 0

[Forrás] A szokásos SQL utasítások végrehajthatók az exec

[Linket másol]
Közzétéve 2015. 02. 09. 14:44:30 | | |
1: A szokásos SQL utasítások végrehajthatók az exec

Válassz * from tableName
exec('select * from tableName')
exec sp_executesql N'select * from tableName' -- Fontos megjegyezni, hogy N-t kell hozzáadni a string előtt

2: Amikor mezőneveket, táblapokat, adatbázisneveket stb. használunk változóként, dinamikus SQL-t kell használni

Kijelentés @fname Varchar(20)
set @fname = 'FiledName'
Válaszd ki a @fname a tableName közül -- Hiba, hiba nem jelentkezik, de az eredmény fix értékű FiledName lesz, ami nem az, amit szeretnél.
exec('select ' + @fname + ' from tableName') – megjegyzem, hogy egy szóköz kerül az egyetlen idézőjel oldalára a plusz jel előtt és után

Természetesen a stringet változó alakra is lehet változtatni
Kijelentés @fname Varchar(20)
Állítsd @fname = 'FiledName' --Állítsd be a mező nevét

deklaráld @s varchar(1000)
állítsd @s = 'select ' + @fname + ' a tableName-ből'
exec(@s) -- siker
vezető sp_executesql @s -- Ez a mondat hibát fog jelenteni

deklaráld @s Nvarchar(1000) -- itt megjegyezzük, hogy a nevét nvarchar(1000)-re változtatják.
állítsd @s = 'select ' + @fname + ' a tableName-ből'
exec(@s) -- siker
Executive sp_executesql @s – ez a mondat helyes

3. Kimeneti paraméterek
Declare @num int, @sqls nvarchar(4000)
állítsuk @sqls='select count(*) from tableName'
exec(@sqls)

--hogyan tehetem be az exec végrehajtás eredményét egy változóba?

Declare @num int, @sqls nvarchar(4000)
állítsa @sqls='select @a=count(*) a tableName '
exec sp_executesql @sqls,N'@a int output', @num output
Válassz @num


1: A szokásos SQL utasítások végrehajtási feladatok végrehajtási példája: Válassz * from tableName
                Exec('select * from tableName')
                Exec sp_executesql N'select * from tableName' -- Fontos megjegyezni, hogy N-t kell hozzáadni a string előtt

2: Amikor mezőneveket, táblapokat, adatbázisneveket stb. használunk változóként, dinamikus SQL-t kell használni

    Hiba: deklarate @fname varchar(20)
                set @fname = 'FiledName'
                Válaszd ki a @fname a tableName közül -- Hiba, hiba nem jelentkezik, de az eredmény fix értékű FiledName lesz, ami nem az, amit szeretnél.
    Helyes: Exec('select ' + @fname + ' from tableName') – figyeld meg, hogy egy hely van a idézőjel oldalára a plusz jel előtt és után

    Természetesen a stringet változó alakra is lehet változtatni
                Kijelentés @fname Varchar(20)
                Állítsd @fname = 'FiledName' --Állítsd be a mező nevét

                deklaráld @s varchar(1000)
                állítsd @s = 'select ' + @fname + ' a tableName-ből'
                Exec(@s) -- Siker
                vezető sp_executesql @s -- Ez a mondat hibát fog jelenteni

              --Megjegyzés: @s paraméternek ntext, nchar vagy nvarchar típusúnak kell lennie, deklare-t kell @s varchar(1000) módosítani, hogy @s nvarchar(1000) deklaráljon



               A következők:
                deklaráld @s Nvarchar(1000) -- itt megjegyezzük, hogy a nevét nvarchar(1000)-re változtatják.

                Állítsd @fname = 'FiledName' --Állítsd be a mező nevét
                állítsd @s = 'select ' + @fname + ' a tableName-ből'
                Exec(@s) -- Siker   
                Executive sp_executesql @s – ez a mondat helyes

3. Bemeneti vagy kimeneti paraméterek

      (1) Bemeneti paraméterek:
          Declare @QueryString nvarchar(1000) -- dinamikus lekérdezési utasítás változó (megjegyzés: ntext vagy nchar nvarchar típusúnak kell lennie, nem varchar típusnak)
          Declare @paramstring nvarchar(200) - Állítsd be a paraméterláncot a dinamikus állításban (megjegyzés: ntext vagy nchar nvarchar típusnak kell lennie, nem varchar típusnak)
          declare @input_id int - Meghatározza a dinamikus állításba továbbítandó paraméterek értékét

          Állítsuk be @QueryString='select * from tablename, ahol id=@id' --id a mező neve, @id a továbbítandó paraméter
          küme @paramstring='@id int' -- A dinamikus állítás paramétereit definiáló stringet állítja be
          @input_id =1 -- Állítsuk be a dinamikus állításban átadandó paraméter értékét 1-re
          exec sp_executesql @querystring,@paramstring,@id=@input_id
          Ha több paraméter létezik:
          Declare @QueryString nvarchar(1000) -- dinamikus lekérdezési utasítás változó (megjegyzés: ntext vagy nchar nvarchar típusúnak kell lennie, nem varchar típusnak)
          Declare @paramstring nvarchar(200) - Állítsd be a paraméterláncot a dinamikus állításban (megjegyzés: ntext vagy nchar nvarchar típusnak kell lennie, nem varchar típusnak)
          declare @input_id int - Megadja annak a paraméternek az értékét, amelyet a dinamikus utasításba kell továbbítani, 1. paraméter
          declare @input_name varchar(20) - definiálja az argumentus értékét, amelyet a dinamikus állításba kell továbbítani, 2. paraméter

          Állítsuk be @QueryString='select * from tablename-ből, ahol id=@id és name=@name' --id és name mezőnevek, @id és @name pedig a továbbítandó paraméterek
          A @paramstring='@id int,@name varchar(20)' halmaz – Állítsuk be a dinamikus állítás paramétereinek definíciójának stringjét, elválasztva ","
          @input_id =1 -- Állítsuk be a dinamikus állításban átadandó paraméter értékét 1-re
          Állítsuk @input_name='Zhang San' --Állítsuk be a dinamikus utasításban átadandó paraméter értékét 'Zhang San'-nak
          exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name -- Figyeld meg az érvek sorrendjét
     (2) Kimeneti paraméterek
             Declare @num int, @sqls nvarchar(4000)
            állítsuk @sqls='select count(*) from tableName'
            exec(@sqls)
        --hogyan tehetem be az exec végrehajtás eredményét egy változóba?         
        declare @QueryString nvarchar(1000) -- dinamikus lekérdezésnév változó (Megjegyzés: ntext vagy nchar nvarchar típusnak kell lennie, nem varchar típusnak)
        Declare @paramstring nvarchar(200) - Állítsd be a paraméterláncot a dinamikus állításban (megjegyzés: ntext vagy nchar nvarchar típusnak kell lennie, nem varchar típusnak)
        Declare @output_result int – a lekérdezés eredménye a @output_result

        A @QueryString='select @totalcount=count(*) a Tablename-ből' --@totalcount a kimeneti paraméter
        Állítsuk @paramstring='@totalcount int output' --Állítsuk be a dinamikus állítás paramétereivel definiált stringet, elválasztva ","
        exec sp_executesql @querystring,@paramstring,@totalcount=@output_result kimenet
        Válassz @output_result
        Természetesen a bemeneti és kimeneti paraméterek együtt is használhatók, így kipróbálhatod magad.
        Ezen felül, ha dinamikus utasításlekérdezés eredményhalmazát szeretnéd kiadni, csak a következő módszerre gondolok, az ideiglenes táblák használatával, nem tudom, van-e jobb megoldásod.
        IF object_id('[tempdb].[ dbo].#tmp') NEM NULL -- Határozd meg, hogy létezik-e az ideiglenes tábla #tmp, és ha van, töröld
            Dobd le az asztalt #tmp
        A TableName #tmp jelölése a TableName helyéről, ahol 1=2 -- Létrehozz egy ideiglenes tábla#tmp ugyanazzal a struktúrával, mint a TableName

        declare @QueryString nvarchar(1000) -- dinamikus lekérdezésnév változó (Megjegyzés: ntext vagy nchar nvarchar típusnak kell lennie, nem varchar típusnak)
        Állítsa @QueryString='Select * from Tablename'
        beillesztés be #tmp(field1,field2,...) exec(@querystirng)




Előző:SQL módszer a táblaadatok ürítésére
Következő:SQL jegyzetek az utóbbi napokból
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com