SQLServer中動態查詢sql返回值給變數<整理>
sp_executesql 或 EXECUTE 語句執行字串時,字串被作為其自包含批處理執行。SQL Server 將Transact-SQL 語句或字串中的語句編譯進一個執行計劃,該執行計劃獨立於包含 sp_executesql 或 EXECUTE 語句的批處理的執行計劃。下列規則適用於自含的批處理:
直到執行 sp_executesql 或EXECUTE 語句時才將sp_executesql 或 EXECUTE 字串中的 Transact-SQL 語句編譯進執行計劃。執行字串時才開始分析或檢查其錯誤。執行時才對字串中引用的名稱進行解析。
執行的字串中的 Transact-SQL 語句,不能訪問 sp_executesql 或 EXECUTE 語句所在批處理中宣告的任何變數。包含 sp_executesql 或 EXECUTE 語句的批處理不能訪問執行的字串中定義的變數或區域性遊標。
如果執行字串有更改資料庫上下文的 USE 語句,則對資料庫上下文的更改僅持續到 sp_executesql 或 EXECUTE 語句完成。
sp_executesql 支援對 Transact-SQL 字串中指定的任何引數的引數值進行替換,但是 EXECUTE 語句不支援。因此,由 sp_executesql 生成的 Transact-SQL 字串比由 EXECUTE 語句所生成的更相似。SQL Server 查詢最佳化器可能將來自 sp_executesql 的 Transact-SQL 語句與以前所執行的語句的執行計劃相匹配,以節約編譯新的執行計劃的開銷。
1) DECLARE @tbname sysname,@sql varchar(100)
SET @sql='SELECT FROM sysobjects where id=1'
EXEC(@sql)
SELECT @tbname
2) Declare
@tb varchar(10),
@count varchar(10),
@s Nvarchar(4000)
set @tb='1'
set @s=N'select @a=count(0) from ChargeLog_'+rtrim(@tb)
exec sp_executesql @s,N'@a int output',@count output
print @count
返回多個引數:
declare
@str nvarchar(1000),
@m int ,
@VAR VARCHAR(10)
set @str=N'select @MAX=max(grade),@VAR=@NAME from s where name like @name'
exec sp_executesql @str,N'@name varchar(10),@max int output,@VAR VARCHAR(10) OUTPUT',@name='bbaa',@max=@M OUTPUT,@VAR=@var OUTPUT
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-743069/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SqlServer中的動態SqlSQLServer
- SQL SERVER 動態查詢SQLServer
- 繫結變數在靜態sql和動態sql中變數SQL
- SQL Server解惑——查詢條件IN中能否使用變數SQLServer變數
- HyperGraphDB查詢中的變數變數
- 動態SQL——構造通用動態頁面查詢SQL
- SQL Server動態SQL,繫結變數SQLServer變數
- PHP--動態生成sql查詢表格PHPSQL
- PB帶引數帶結果集的動態SQL查詢SQL
- 查詢(2)--動態查詢
- Linq to Sql : 動態構造Expression進行動態查詢SQLExpress
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- 查詢出系統中沒有使用繫結變數的SQL變數SQL
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- 常用Sqlserver中的查詢語句SQLServer
- 查詢SQLSERVER執行過的SQL記錄SQLServer
- 一句SQL完成動態分級查詢SQL
- linq to sql的多條件動態查詢SQL
- SQL server 動態SQL對變數講行賦值SQLServer變數賦值
- 查詢沒有使用繫結變數的sql zt變數SQL
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- SQLServer常用運維SQL整理SQLServer運維
- Java-Mybatis動態SQL整理JavaMyBatisSQL
- 查詢hadoop引數變數Hadoop變數
- V$sql查詢未使用繫結變數的語句SQL變數
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- Go 中的動態作用域變數Go變數
- 查詢SQLSERVER版本號SQLServer
- SqlServer遞迴查詢SQLServer遞迴
- ThinkPHP getBy動態查詢PHP
- jpa動態查詢與多表聯合查詢
- 動態sql查詢結果多行的處理情況SQL
- 隱藏引數查詢sqlSQL
- 在vue中給奇數行動態新增classVue
- 【實驗】sql語句在shared_pool中的查詢(程式 繫結變數)SQL變數
- 陣列中查詢給定值陣列
- Java中查詢給定數字下最大素數的2種方法Java
- hibernate 動態查詢(DetachedCriteria )