sql中儲存過程的引數怎樣才做可以傳給select from

2021-12-28 21:58:43 字數 2463 閱讀 7802

1樓:冬至

create or replace procedureproc_test(@tablename varchar(100))isbegin

select count(*) from @tablename;

end proc_test;

這是oracle的儲存過程,那個@不清楚加還是不加。

2樓:匿名使用者

修正一下2樓的說法@是sql server中的語法

oracle中你可以把查詢組織成字串,然後執行一下,基本思路同3樓。

在sql server 語句中,如何將引數做為表名傳遞到查詢語句中

3樓:匿名使用者

可以使用動態sql來查詢。

如:declare @tablename varchar(20)declare @sql nvarchar(2000)set @tablename='users'

set @sql=n'select * from ' +@tablename+ ''

exec sp_executesql @sql結果說明:

1、動態sql一般是這樣傳遞引數:set @sql=n'select * from ' +@tablename+ ''

2、執行sql時以這種方式:exec sp_executesql @sql

3、定義動態sql變數時,要用nvarchar型別

4樓:匿名使用者

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

將表欄位引數換成實際的欄位就可以,問題出在「如果將表名,欄位名做為引數傳遞到sql server中」出錯的:create function backtocount(@tablename varchar(50))

returns intasbegindeclare @count int

select @count=count(*) from @tablename

return @countend但是這樣的時候會報錯,說變數@tablename要宣告正確的:對於表名作為變數,我們可以使用object_name(id)方法

create function backtocount(@tablename varchar(50))

returns intasbegindeclare @count int

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

return @countendgo--查sysobjects表有多少行

select dbo.backtocount( 'sysobjects ')

使用儲存過程:

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

解決方法:動態sql

create procedure f_count(@tablename varchar(50))asdeclare @str as varchar(1000)

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

5樓:羅永樟

你這個應該是反過來吧,把表名作為引數傳遞到語句中,那這個語句就可以通用吧

select * from [表名],表名可不可以是變數

6樓:匿名使用者

可以是變數,但是變數的值必須是真實有效的表名;

如果不存在的表,查詢語句會報錯的;

在sql語句中,所有的實體都可以是變數的,但是變數必須是資料庫中實際存在的欄位、名稱,否則查詢語句報錯。

7樓:

dim biao

biao="表名"

sql="select * from "& biao可以是變數,但是要保證變數的表存在,否則要出錯哦!

8樓:匿名使用者

看在什麼環境下,其實都可以,如果你是寫在sql存諸過程之類的話就用exec('select * from' & 變數 & ' where id=123')

如果是寫在程式裡面的,例如vb就直接用

execute("select * from '" & 變數 & "' where id=123")

9樓:匿名使用者

不可以,否則系統會找不到指定的table。

10樓:斐白竹

可以的"select from " & 變數 & "where..."

11樓:匿名使用者

那 個 是一個別名

用一個別名 代替 表名 是方便 編寫程式

12樓:匿名使用者

不可以吧,反正我沒遇見過可以的 。

資料庫儲存過程,sql 儲存過程怎樣儲存

sql 儲存過程怎樣儲存 方法和詳細的操作步驟如下 2 第二步,執行完上面的操作之後,執行以下幾行 並檢視執行是否成功,現在,資料庫中存在乙個儲存過程 sp jy 見下圖,轉到下面的步驟。3 第三步,執行完上面的操作之後,該陣列只有三行資料,見下圖,轉到下面的步驟。4 第四步,執行完上面的操作之後,...

sql帶引數的儲存過程寫法,SQL一個帶引數的儲存過程寫法

你的這個做法沒有意義,一般儲存過程主要是針對sql語句執行效率低和資料完整性等來說的,你用這種方法就單單為了查詢一個表中的top資訊,這樣與儲存過程的有點恰恰相反,因為這個方法實現儲存過程中取出你所要的資訊,同是也能用同樣的方法更簡便的從表中取出你要的資訊 你這個不要用返回引數的形式,直接返回記錄集...

資料庫怎麼編寫儲存過程,用SQL怎樣編寫一個儲存過程?

sql server的語法 create procedure proc name para1 int assql statement mysql的語法 create procedure proc name para1 int sql statement 上面的para1是引數,如果不需要可以省略括號...