私はそれを正しくやっていますか...?
私はお金を返す関数を持っています...
CREATE FUNCTION functionName( @a_principal money, @a_from_date
datetime, @a_to_date datetime, @a_rate float ) RETURNS money AS BEGIN
DECLARE @v_dint money set @v_dint = computation_here
set @v_dint = round(@v_dint, 2)
RETURN @v_dint
END
GO
Grant execute on functionName to another_user
Go
これがiTVFに変換できるかどうか疑問に思っていますか?
私はこれを試しましたが、エラーが発生しました:
CREATE FUNCTION functionName ( @a_principal money, @a_from_date
datetime, @a_to_date datetime, @a_rate float )
RETURNS TABLE AS
RETURN SELECT returnMoney = computation_here
GO
Grant execute on functionName to another_user Go
エラー:
メッセージ4606、レベル16、状態1、行2付与または取り消された特権EXECUTEはオブジェクトと互換性がありません。
この関数は次のように使用されます。
update table_name set interest = functionName(col1,col2...) where...
前もって感謝します!
現在テーブルを返しているため、GRANTステートメントはGRANT EXECUTEではなくGRANT SELECTである必要があります。
—
マイク