程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> mssql存儲過程表名和字段名為變量的實現方法

mssql存儲過程表名和字段名為變量的實現方法

編輯:更多數據庫知識

沒有使用動態語句直接報錯

錯誤的
復制代碼 代碼如下:
alter proc testpapers
as
begin
declare @tems nvarchar(max),@zidaun nvarchar(max)
set @tems=select * from @tems order by @zidaun
exec(@tems)
end
exec testpapers

消息 156,級別 15,狀態 1,過程 testpapers,第 1 行
關鍵字 'select' 附近有語法錯誤。
消息 1087,級別 15,狀態 2,過程 testpapers,第 1 行
必須聲明表變量 "@tems"。

首先要讓表名或者字段為變量則要用到動態語句

錯誤的
復制代碼 代碼如下:
alter proc testpapers
as
begin
declare @tems nvarchar(max),@zidaun nvarchar(max)
set @tems='select * from @tems order by @zidaun ';
exec(@tems)
end

exec testpapers

消息 1087,級別 15,狀態 2,第 1 行
必須聲明表變量 "@tems"。

將表名和字段名寫到exec裡邊

正確的
復制代碼 代碼如下:
alter proc testpapers
as
begin
declare @startRow nvarchar(max),@tems nvarchar(max),@zidaun nvarchar(max)
set @startRow='temp'
set @tems='select * from ';
set @zidaun='p_id';
exec(@tems+@startRow+' order by '+@zidaun)
end

exec testpapers

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved