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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server解惑——查詢條件IN中能否使用變數SQLServer變數
- PHP--動態生成sql查詢表格PHPSQL
- PB帶引數帶結果集的動態SQL查詢SQL
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- 一句SQL完成動態分級查詢SQL
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- SQLServer常用運維SQL整理SQLServer運維
- Springboot中配置動態sql查詢出現的錯誤syntax error, expect ‘)‘Spring BootSQLError
- Java-Mybatis動態SQL整理JavaMyBatisSQL
- V$sql查詢未使用繫結變數的語句SQL變數
- SqlServer遞迴查詢SQLServer遞迴
- 查詢SQLSERVER版本號SQLServer
- SQLServer如何查詢近3分鐘最消耗CPU的SQLSQLServer
- Mybatis連線池_動態sql語句_多表查詢實現MyBatisSQL
- jpa動態查詢與多表聯合查詢
- Sql Server 的引數化查詢SQLServer
- 抽象SQL引數化查詢VK抽象SQL
- SQL 查詢中的 NULL 值SQLNull
- sqlserver查詢結果中新增自動編號SQLServer
- SqlServer查詢資料改動歷史記錄SQLServer
- 陣列中查詢給定值陣列
- Go 中的動態作用域變數Go變數
- Mybatis 裡對映檔案的動態 SQL 語句,實現if,where,foreache的SQL語句動態拼接查詢MyBatisSQL
- Specifications 構建動態查詢
- SQL查詢的:子查詢和多表查詢SQL
- SQLSERVER跨伺服器查詢SQLServer伺服器
- SQLServer DML操作阻塞SELECT查詢SQLServer
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- 探究MySQL中SQL查詢的成本MySql
- C++ 變數型別查詢C++變數型別
- Java中查詢給定數字下最大素數的2種方法Java
- 在 SQL Server 中查詢活動連線和死鎖SQLServer
- 在vue中給奇數行動態新增classVue
- 原生SQL查詢SQL
- SQL--查詢SQL
- SQL 聚合查詢SQL
- Solidity中函式返回值,靜態動態陣列Solid函式陣列
- BIRT 中如何根據引數動態拼接 SQLSQL
- SpringDataJpa (二)-動態查詢&多表操作Spring