SQL Server 2012 動態SQL查詢

2022-03-07 03:39:51 字數 1581 閱讀 2211

動態sql的兩種執行方式:exec @sql 和 exec sys.sp_executesql @sql

declare @c_ids varchar(200)

set @c_ids ='1,2'

--直接這樣是無法執行的

--select * from dbo.student where class in (@c_ids)

--1, exec 執行sql動態查詢

exec ('select * from dbo.student where class in ('+@c_ids+')')

-- 2,通過動態查詢,過濾需要的列

declare @rols varchar(200)

set @rols='stuname,stuage,class'

exec ('select '+@rols+' from dbo.student where class in ('+@c_ids+')')

--3,執行sql動態查詢的另外一種方法,通過內建儲存過程:sys.sp_executesql 執行sql語句

declare @sql nvarchar(200)

set @sql='select '+@rols+' from dbo.student where class in ('+@c_ids+')'

exec sys.sp_executesql @sql

--4, 儲存過程動態執行sql,以引數變數@agepara的形式給sql語句傳遞變數

declare @age int

set @age = 18

set @sql='select * from dbo.student where stuage = @agepara '

exec sys.sp_executesql @sql,n'@agepara int',@age

--5, '' 兩個' 轉移成乙個',選擇出名字中包含有『英』字的學生資訊

declare @txt nvarchar(10)

set @txt = '英'

set @sql='select * from dbo.student where stuname like ''%@namepara'' '

exec sys.sp_executesql @sql,n'@namepara nvarchar(10)',@txt

--6, 把需要輸出的變數同樣可以定義到變數中進行輸出

declare @rowcountresult int

set @sql='select @rowcountresult=count(*) from dbo.student where stuage = @agepara '

exec sys.sp_executesql @sql,n'@agepara int,@rowcountresult int output',@age ,@rowcountresult output

select @rowcountresult

--7,技巧:用print 檢視拼接的動態sql是否正確

select 'select '+@rols+' from dbo.student where stuage = @agepara '

解除安裝sql server 2012

好不容易裝上了sql server2012資料庫,可是卻不能連線本地的資料庫,後來發現缺少一些服務,於是決定重新安裝,但是解除安裝卻很麻煩,如果解除安裝不乾淨的話,重新安裝會出問題,所以下面就總結一些方法 在解除安裝sql server 2012後,大家都希望能夠將登錄檔資訊完全刪乾淨,下面就將教您...

SQLServer 2012 高效分頁

sql code 功能 生成測試資料.create table test paging id int identity 1,1 not null primary key,testnumber int not null,testname varchar 20 not null,testdept var...

SQL Server2012中的Throw語句

簡 介sql server2012實現了 類似c 丟擲異常的 throw 語句。相比較於 sqlserver2005 之前使用 error,和sqlserver2005 之後使用 raiserror 引發 異常都是乙個不小的 進步,下面來看一下 throw 的用法。raiserror 和throw ...