在sql語句中,怎樣將引數做為表名傳遞到查詢語句中

2021-05-23 10:28:51 字數 1114 閱讀 4116

今天為了提取出公共的fuction提高執行效率,需要傳遞表的字段作為引數,語法可以通過,但是查詢結果不正確。

將表字段引數換成實際的字段就可以,問題出在「如果將表名,欄位名做為引數傳遞到sql server中」

create   function   backtocount(@tablename   varchar(50))  

returns   int

as begin

declare   @count   int

select   @count=count(*)   from   @tablename

return   @count

end

但是這樣的時候會報錯,說變數@tablename要宣告

對於表名作為變數,我們可以使用object_name(id)方法

create   function   backtocount(@tablename   varchar(50))  

returns   int

as begin

declare   @count   int

select   @count=rows   from   sysindexes   where   indid   in   (0,1)   and   object_name(id)=@tablename

return   @count

end

go --查sysobjects表有多少行

select   dbo.backtocount( 'sysobjects ')

對於字段變數的話,必須執行動態語句,但是函式裡邊不能用exec,建議使用儲存過程實現。

解決方法:動態sql

create   procedure   f_count(@tablename   varchar(50))

as declare   @str   as   varchar(1000)

set   @str= 'select   count(*)   as   a   from   '+@tablename

print   @str

exec   (@str)

exec   f_count   'sysfiles '

SQL語句中的執行時引數

執行時引數 一 執行時引數的使用 sql語句中的值,我們可以使用乙個引數來代替,然後每次執行的時候都可以重新輸入這個值 例如 select last name,salary,dept id from s emp where id id 如上圖所示,使用了執行時引數 id,其中id為變數值,如果之前沒...

c 分析SQL語句中的表操作

最近寫了很多方向的總結和demo.基本包含了工作中的很多方面,畢竟c 已經高度封裝並且提供了很多類庫。前面已經總結了博文。最近2天突然感覺前面的sql分析阻元件的確麻煩,也注意看了下。為了方便大家學習交流。自己專門另外寫了乙個元件demo.用正規表示式獲取操作型別,其實原理很簡單,我簡單介紹下,算是...

C 引數化SQL語句中的like和in

在寫專案的時候遇到乙個問題,sql 語句進行 like in 引數化,按照正常的方式是無法實現的 我們一般的思維是 like 引數 string strsql select from person.address where city like add sqlparameter parameters...