SQL Server動態SQL,繫結變數
研究了一下SQL Server中動態SQL的用法,寫慣了Oracle,對於SQL Server還有些不習慣
create table test_with(
pid int,
parentid int,
name varchar(60)
)
declare @pid int = '99',@name nvarchar(60) = 'ABCD'
declare @parentid int = 2
declare @sql varchar(3000)
set @sql = 'insert into test_with values('+CAST(@pid as varCHAR(10))+','+CAST(@pid as varCHAR(10))+',"'+CAST(@name as varCHAR(10))+'")'
print @sql
exec (@sql)
declare @dynamic_sql nvarchar(4000)
execute sp_executesql @dynamic_sql ,N'@pid int,@parentid int ,@name nvarchar(60)',@pid,@parentid,@name --繫結變數
另一個寫法:
declare @sql nvarchar(4000)
declare @pid int
declare @dt datetime
set @pid = 99
set @dt = GETDATE() + 2
set @sql = 'select @dt as dt, pid, name from test_with where pid = @pid'
execute sp_executesql @sql, N'@dt datetime, @pid int', @dt, @pid
需要注意的是,在SQL SERVER 2008 R2裡,@sql必須宣告為nvarchar
而且引數宣告部分也應宣告為unicode編碼
create table test_with(
pid int,
parentid int,
name varchar(60)
)
declare @pid int = '99',@name nvarchar(60) = 'ABCD'
declare @parentid int = 2
declare @sql varchar(3000)
set @sql = 'insert into test_with values('+CAST(@pid as varCHAR(10))+','+CAST(@pid as varCHAR(10))+',"'+CAST(@name as varCHAR(10))+'")'
print @sql
exec (@sql)
declare @dynamic_sql nvarchar(4000)
execute sp_executesql @dynamic_sql ,N'@pid int,@parentid int ,@name nvarchar(60)',@pid,@parentid,@name --繫結變數
另一個寫法:
declare @sql nvarchar(4000)
declare @pid int
declare @dt datetime
set @pid = 99
set @dt = GETDATE() + 2
set @sql = 'select @dt as dt, pid, name from test_with where pid = @pid'
execute sp_executesql @sql, N'@dt datetime, @pid int', @dt, @pid
需要注意的是,在SQL SERVER 2008 R2裡,@sql必須宣告為nvarchar
而且引數宣告部分也應宣告為unicode編碼
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-1062174/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 繫結變數在靜態sql和動態sql中變數SQL
- SQL server 動態SQL對變數講行賦值SQLServer變數賦值
- SQL Developer中使用繫結變數SQLDeveloper變數
- 【SQL 調優】繫結變數窺測SQL變數
- 【sql調優】繫結變數與CBOSQL變數
- 【sql調優】使用繫結變數(二)SQL變數
- 【sql調優】使用繫結變數(一)SQL變數
- 檢視未繫結變數的sql變數SQL
- 獲取sql繫結變數的值SQL變數
- 統計沒有繫結變數SQL變數SQL
- 關於繫結變數的SQL繫結什麼值變數SQL
- 介面的繫結方案和動態SQLSQL
- 關於pl/sql中的繫結變數SQL變數
- [SQL]oracle 繫結變數(bind variable)[轉載]SQLOracle變數
- SQL使用繫結變數,測試例項。SQL變數
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-繫結變數SQL變數
- Sql Server系列:Transact-SQL變數SQLServer變數
- Vue select 繫結動態變數Vue變數
- 關於sql_profile中的繫結變數SQL變數
- 統計未用繫結變數的sql語句變數SQL
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- v$sql_bind_capture 獲取繫結變數SQLAPT變數
- SQL Server 全域性變數SQLServer變數
- SQL*Plus中使用DATE型別的繫結變數SQL型別變數
- v$sql_bind_capture 獲取繫結變數資訊SQLAPT變數
- 查詢沒有使用繫結變數的sql zt變數SQL
- SQL SERVER 動態查詢SQLServer
- 【SQL Server】常用全域性變數SQLServer變數
- V$sql查詢未使用繫結變數的語句SQL變數
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- PL/SQL中繫結變數使用的簡單測試SQL變數
- oracle找出沒有使用繫結變數的sql語句Oracle變數SQL
- 通過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- 尋找沒有使用繫結變數的sql語句變數SQL
- 關於oracle sql變數繫結提高效率OracleSQL變數
- 動態條件的繫結變數的解決變數
- SQL Server中的全域性變數SQLServer變數