私はSQLサーバーでスカラー関数を作成しています。関数のパラメーターとして列名を渡します。この関数では、そのテーブルでそれらの列名を使用しています。@FromCurrency
とはテーブル@ToCurrency
の列名ですCurrencyConversion
。
次のようにコードします。
alter FUNCTION fnCurrencyConversion --1200.90,'NGN','CAD'
(@MoneyAmount MONEY,
@FromCurrency nvarchar(20),
@ToCurrency nvarchar(20))
RETURNS decimal(18,2)
AS
BEGIN
declare @BaseToUsd nvarchar(1000), @UsdToTarget nvarchar(1000)
declare @Rate decimal(18,5)
set @BaseToUsd= ('select top 1 '+ @FromCurrency +' from CurrencyConversion order by id desc')
set @UsdToTarget = ('select top 1 '+ @ToCurrency +' from CurrencyConversion order by id desc')
set @Rate = @UsdToTarget/@BaseToUsd
declare @TotalAmt decimal(18,5)
set @TotalAmt = (@Rate * @MoneyAmount)
return @TotalAmt
END
SQLのスカラー値関数で列名を渡す方法は?