可以在存贮过程中定义一个变量存放临时表吗?
有些中间表不想保留下来,能不能定义一个变量来存呢?如果可以定成什么类型呢?
给二行代码,谢谢先。
你把中间表做成临时表,当存储过程结束后,临时表就自动删除了,这样达到你的要求了吧?
或者定义为一个表型变量,执行完后也删除了
declare @a table(id int,content int)
insert into @a select 1,2
select * from @a
--以下是我在開發系統時做一個分頁存儲過程裡用到了你所要的,
--希望能給你一點見意
CREATE PROCEDURE Ma_View_EmailLog
@vEmailID varchar(20)=, --EmailID號
@vMenuID varchar(20)=, --網頁ID號
@vModelID varchar(20)=, --模塊ID號
@vObjID varchar(20)=, --目標ID號
@vRefID varchar(20)=, --參考ID號
@vSendUserID varchar(20)=, --發送人ID號
@nvActionType nvarchar(20)=, --操作類型
@nvGrade nvarchar(10)=, --Email重要性
@ipagesize int, --每頁記錄數
@ipageindex int, --第几頁
@vsortby varchar(50), --排序方式
@irowcount int output --記錄總數
AS
create table #temp
(
TID int identity(1,1),
EmailID varchar(50),
ModelID varchar(50),
ModelName nvarchar(200),
MenuID varchar(50),
MenuName nvarchar(200),
ObjID varchar(50),
RefID varchar(50),
SendUserName nvarchar(50),
RequestUserName nvarchar(1000),
Grade nvarchar(50),
ActionType nvarchar(50),
Title nvarchar(200),
CreateTime datetime
)
set nocount on
declare @vSQLString varchar(2000)
set @vSQLString=
set @vSQLString=
insert into #temp (EmailID,ModelID,ModelName,MenuID,MenuName,ObjID,RefID,SendUserName,RequestUserName,Grade,ActionType,Title,CreateTime) +
select EmailID,ModelID,ModelName,MenuID,MenuName,ObjID,RefID,SendUserName,RequestUserName,Grade,ActionType,Title,CreateTime +
from EmailLog +
where EmailID like +%+@vEmailID+%+ and +
ModelID like +%+@vModelID+%+ and +
ObjID like +%+@vObjID+%+ and +
RefID like +%+@vRefID+%+ and +
SendUserID like +%+@vSendUserID+%+ and +
(ActionType=+@nvActionType+ or +@nvActionType+=) and +
(Grade=+@nvGrade+ or +@nvGrade+=)
if(ltrim(@vsortby)=)
begin
set @vsortby=EmailID
end
set @vSQLString=@vSQLString+ order by +@vsortby
exec(@vSQLString)
set @irowcount=@@rowcount
select EmailID,ModelName,MenuName,ObjID,RefID,SendUserName,RequestUserName,Grade,ActionType,Title,CreateTime
from #temp
where TID between ((@ipageindex-1)*@ipagesize+1) and (@ipageindex*@ipagesize)
drop table #temp
GO
--调用示例:
declare
@vMenuID varchar(20), --網頁ID號
@vModelID varchar(20), --模塊ID號
@vObjID varchar(20), --目標ID號
@vRefID varchar(20), --參考ID號
@vSendUserID varchar(20), --發送人ID號
@nvActionType nvarchar(20), --操作類型
@nvGrade nvarchar(10), --Email重要性
@ipagesize int, --每頁記錄數
@ipageindex int, --第几頁
@vsortby varchar(50), --排序方式
@irowcount int --記錄總數
select @vMenuID=Em0506040001,@vMenuID=016105,@vModelID=016,@vObjID=MT0506040002,
@vRefID=PJ0506040002,@vSendUserID=mis_cxw,@nvActionType=cancel,@nvGrade=high,
@ipagesize=15,@ipageindex=1,@vsortby=EmailID desc
exec Ma_View_EmailLog @vMenuID,@vMenuID,@vModelID,@vObjID,@vRefID,@vSendUserID,@nvActionType,@nvGrade,
@ipagesize,@ipageindex,@vsortby,@irowcount output