내에서 연산 식을 평가하고 내가 이것을 달성하는 방법을 많이 시도하지만 난 붙어 얼마나난이 스칼라 함수를 실행하려고 오전 SQL 스칼라 함수
Create FUNCTION CalculateElementFunc()
RETURNS int
AS
BEGIN
DECLARE @ResultVar numeric(18,6)
DECLARE @eq nvarchar(MAX)
set @eq = '7.5/100*1258.236'
declare @expression nvarchar(max)
set @expression = @eq
declare @result int
declare @SQLString nvarchar(max)
Set @SQLString = N'Select @result = @expression'
exec sp_executesql @SQLString, N'@expression nvarchar(100)',
@expression,
@result = @result output
select @ResultVar = @result
if(@ResultVar <> ROUND(@ResultVar, 2 ,1))
set @ResultVar = cast(ROUND(@ResultVar, 2 ,1) + .01 as numeric(18,2))
RETURN @ResultVar
END
내가 그것을
를 실행하려고선택 dbo.CalculateElementFunc()
내가이 오류가
메시지 557, 수준 16, 상태 2, 줄 1 개 만 기능 등 내 확장 된 저장 프로 시저를 함수 내에서 실행할 수 있습니다.
Please Advice
T-SQL의 함수에는 부작용이있을 수 없습니다. 따라서 삽입/업데이트하거나 저장 프로 시저를 호출 할 수 없습니다. 표현 파서를 직접 구현하지 않는 한 (분명히 중요한 것은 아닙니다.) 순수 TSQL에서는 가능하지 않다고 생각합니다. 게다가 성능은 끔찍할 것입니다. 아마도 CLR 함수를 사용하면됩니다. –
then .. SQL 스칼라 함수 내에서 산술 표현식을 평가하는 대안은 무엇입니까 – Mariam
디자인 타임에 표현식을 알 수없고 저장 프로 시저가 아닌 함수가 필요하다면 제가 말했던 것처럼 (다른 사람들도 지적했듯이) 귀하의 유일한 옵션은 CLR 함수입니다 (또는 더 나은 아직은 : SQL에서하지 마십시오) –