TOP字句加SQL變數的相關問題

2021-06-21 16:14:58 字數 1271 閱讀 1458

sql server資料庫中的變數可以載入top字句之後,下文將對top字句加sql變數的相關問題進行討論,供您參考,希望對您學習sql資料庫有所幫助。

sql server2005開始,top子句後可以跟常量或者變數,跟常量時可省略括號,即top(2)和top 2是等價的(注意不加括號時top和2間的空格),top後使用sql變數時必須使用括號,例: 

sql**

declare @num int   

set @num = 10    

select top(@num) * from sys.tables  

declare @num int

set @num = 10

select top(@num) * from sys.tables

使用動態sql為: 

sql**

declare @num int   

set @num = 10    

declare @str nvarchar(1000)    

set @str = 'select top('+cast(@num as nvarchar(10))+') * from sys.tables'   

exec(@str)  

declare @num int

set @num = 10

declare @str nvarchar(1000)

set @str = 'select top('+cast(@num as nvarchar(10))+') * from sys.tables'

exec(@str)

關於exec的一些備註: 

1.使用exec命令時,括號中只允許包含乙個字元變數,或者乙個字串文字,或者字串變數與字串文字的串聯。不能在括號中使用函式或case表示式,所以最好將**放在乙個變數中,再把此sql變數作為exec命令的引數 

2.exec()不提供介面,因此動態批處理不能訪問在呼叫批處理中定義的區域性變數,必須把變數內容串聯到字串中,就像上面的例子一樣。上面動態sql的例子如果寫為 sql**

set @str = 'select top('+@num +') * from sys.tables';    

exec(@str)  

set @str = 'select top('+@num +') * from sys.tables';

exec(@str)

則會報錯 

3.同樣的exec也不支援輸出引數,如果要把輸入放進乙個sql變數,必須先把輸入插入乙個目標表,然後再從目標表例取值賦給該變數

sql查詢 TOP字句

select top 子句用於指定要返回的記錄數量。並不是所有的資料庫系統都支援select top子句。mysql支援limit子句來選擇有限數量的記錄,而oracle使用rownum。top 後面可以指定是按照百分比進行查詢還是指定行數 注意 順序是從前往後哦 語法 select top 數字 ...

根據top的程序pid找到sql

select sid,serial username,status,osuser,machine,terminal,program from v session where paddr select addr from v process where spid spid 檢視下相關的sid 然後通過...

奇怪的SQL 2005 TOP問題

裝了個4月份的ctp sql server 2005版本,按照msdn上試了下新的top的用法 use adventureworks godeclare p as int set p 10 select top p from humanresources.employee go 可氣的是,copy ...