動態SQL語句小解

2022-02-12 13:23:44 字數 1528 閱讀 5817

最近在學習期間接觸了動態sql操作,然後小總結了一下給出自己的心得。

在我們的專案中經常需要用到分面功能,而我以前呢用的方法現在看起來都是那麼的笨拙,當時是這樣做的,每當要進行資料分頁時就專們針對那個表做分頁,大家別笑,以前確實好笨。呵呵,雖然當時也有乙個想法就是希望能夠傳入一張表進去進行操作,但那樣的話編譯是通不過的,因為from後面操作的是表變數,而不能是我們自定義的變數,所以當時沒有深追究,現在為當時不深入學習而bs一下。

動態sql需要準備以下內容:1、@sql 拼接後的sql語句,可以是你任意需要的sql語句如:set @sql='select * from table where

id=@id'

注意此處的@sql必須且只能是ntext、nvarchar、nchar型別,如果是其它型別的話其它地方明明沒有問題卻會報 "過程需要型別為 'ntext/nchar/nvarchar' 的引數"這個錯誤。同時,如果這裡需要傳入表名稱的話則應這樣寫:set @sql='select * from '+@table+'where

id=@id'

,因為上面傳入的值是文字型別故會報錯。

2、@parameters  所拼接的sql語句裡面的引數,按上面的話這裡應該是:set @parameters='@id int' 同時這個引數的型別也必須且只能是ntext、nvarchar、nchar型別

3、呼叫:sp_executesql param1(,param2)   其中param1一般我們作為是@sql,後面的引數則是我們在@sql中的引數了,但這裡要注意的是傳參的時候必須是對應的:

declare @inputid int ;

set @inputid=1;

param2為:@id=@inputid;

以下是寫的乙個簡單的通用分頁,有需要可以自行修改:

alter procedure sp_pager

(  @tablename  nvarchar(50),   -- 表名 

@returnfields nvarchar(200) = '*', -- 需要返回的列  

@pagesize  int = 50,    -- 每頁記錄數 

@pageindex  int = 1   -- 當前頁碼    

)  as

declare @sql nvarchar(1000)

declare @paramters nvarchar(200)

begin

set nocount on

set @sql='select '+@returnfields+' from '+@tablename+' where id>(select top 1 id from (select top '+cast(@pagesize*@pageindex as varchar)+' id from '+@tablename+ ' order by id )as a order by id desc)'

print @sql

execute sp_executesql @sql,@paramters,@columns=@returnfields

end

動態SQL語句

動態使用sql語句的幾點技巧 動態sql語句,就是sql語句中引數會變化的sql語句,一般在程式中要根據使用者的需要隨時改變其引數值,對於動態sql語句必須注意以下幾點 先呼叫close方法,關閉query元件。如果query元件已經關閉,呼叫close方法不會出錯,也沒有其它影響。再呼叫clear...

動態SQL語句

動態sql語句 1.if 條件 2.choose,where 和 otherwise 條件 3.where 條件 4.trim 條件 5.foreach 迴圈 6.set 條件 7.bind if 有條件的包含where子句的一部分 比如 select from blog where state a...

動態SQL語句

dao的方法 update的配置方法 使用update標籤和set標籤實現動態生成sql語句 當nickname,birthday,email,pic屬性不為空,而且不為空串,則設定值 步驟在resources目錄下建立資料夾,注意 資料夾不是點號,而是斜槓。在目錄下建立userdao.xml配置檔...