SQL Server使用过程计算列值
我有一个程序,根据其他表格中的一些值计算旅行价格 程序如下所示:SQL Server使用过程计算列值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个程序,根据其他表格中的一些值计算旅行价格 程序如下所示: create procedure CalculateTravelPrice(@ID int) as begin return (select SalaryForOneDay from Driver where driver.PersonID=@ID)+ (select SalaryForOneDay from Driver where driver.PersonID=@ID) end 我正在尝试添加使用以下过程计算值的列: al
create procedure CalculateTravelPrice(@ID int)
as
begin
return
(select SalaryForOneDay from Driver where driver.PersonID=@ID)+
(select SalaryForOneDay from Driver where driver.PersonID=@ID)
end
我正在尝试添加使用以下过程计算值的列:
alter table RegisteredTravel
add PriceForTravel as (CalculateTravelPrice(RegTravelID))
但我有错误的说法
味精195,第15级,第10状态,第2行“CalculateTravelPrice”不是可识别的内置函数名。“
所以问题是如何正确地使用过程来计算这个值?这是一个好的做法还是有更好的方法?您应该将您的过程转换为udf(用户定义函数)。然后您可以将其用于计算列。我不认为procs可以这样使用。我将过程更改为函数,但仍然存在相同的错误-“CalculateTravelPrice”不是可识别的内置函数名。我调用此函数是错误的还是什么?函数需要在其调用中包含架构,因此请尝试更改列d定义为:
将PriceForTravel添加为(dbo.CalculateTravelPrice(RegTravelID))
谢谢,一分钟前我自己就解决了这个问题:Dno不用担心。不过,当选择很多行时,请注意它的性能——UDF可能是计算列的一种缓慢方式。是的,每次调用UDF时,它都会重新计算。这也可能对您不利,因为您的数据将更新为“一天的薪水”“更新。我认为这是不正确的,因为您希望旅行时的费用是准确的。您可能需要考虑拥有一个合适的列,并用after-insert触发器填充它。即使有一个视图,您也很难像旅行发生时那样捕获成本。请注意:sql中是否有输入错误?-查询的两个部分是相同的。如果是这种情况,你最好只做x2并保存一个数据读取。我怀疑你在这里加入会更快!