我有一个这样的存储过程:
ALTER procedure [dbo].[SaveVisitor_info]
@VisitorName nvarchar(100) = null,
@VistorCompanyName nvarchar(100) = null,
@typeofid nvarchar(100) = null,
@VisitorIDNo nvarchar(100) = null,
@VisitPurpose nvarchar(100) = null,
@Company nvarchar(100) = null,
@Department nvarchar(100) = null,
@Employee nvarchar(100) = null,
@passno nvarchar(100) = null,
@Accompaniedby integer = null,
@stordloc nvarchar(100) = null,
@nationality nvarchar(100) = null,
@occupation nvarchar(100) = null,
@mobileno nvarchar(100) = null
as
begin
declare @idtype integer,
@visitid integer,
@cmpid integer,
@dptid integer,
@empid integer,
@currentdate datetime
SET NOCOUNT ON
select @currentdate = getdate()
select @idtype = td.ID
from Type_ofID_tbl td
where td.IDName = @typeofid
Select @visitid = v.vistid
from VisitPurpose_tbl v
where v.purpose = @VisitPurpose
select @cmpid = c.Cid
from CompanyMaster_tbl c
where c.CompanyName=@Company
select @dptid = d.dtId
from DepartmentMaster_tbl d
where d.dtName = @Department
select @empid = e.eId
from EmployeeMaster_tbl e
where e.eName = @Employee
insert into Visitorlogo_tbl(VName, VCompanyName, Idid, IdNo, VisitId, cmpid, Deptid, empid, PassNo, TotalVisitor,
StordLocation, Nationality, Occupation, MobileNo, EntryTime, status)
values(@VisitorName, @VistorCompanyName, @idtype, @VisitorIDNo, @visitid, @cmpid, @dptid, @empid, @passno, @Accompaniedby,
@stordloc, @nationality, @occupation, @mobileno, @currentdate, 1)
end
这个存储过程工作正常,我得到了正确的输出。
我正在声明一些变量并获取每个变量值。之后我将这些值插入到我的表中。
我想知道如何更容易地编写存储过程?
感谢任何帮助。
答案 0 :(得分:1)
这是最有效的方式或写这个。是的,你必须在五个不同的桌子上写下五个单身选择,那又怎样呢? - 你可能可以写一个选择加入那些fove表,但是在性能方面你不会获得任何东西,恰恰相反。
如果存在性能问题,请在where子句中使用的列上创建索引(如果它们已丢失),并在必要时包含选择列表中的列。但我不认为你会这样做。