Apakah saya melakukannya dengan benar ...?
Saya memiliki fungsi yang mengembalikan uang ...
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
Saya hanya ingin tahu apakah ini mungkin untuk dikonversi ke iTVF?
Saya sudah mencoba melakukan ini tetapi saya mendapat kesalahan:
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
KESALAHAN:
Msg 4606, Level 16, State 1, Line 2 Hak istimewa yang diberikan atau dicabut EXECUTE tidak kompatibel dengan objek.
Fungsi ini digunakan seperti ini:
update table_name set interest = functionName(col1,col2...) where...
Terima kasih sebelumnya!
sql-server
functions
Jack Frost
sumber
sumber
Jawaban:
Fungsi skalar memerlukan
EXECUTE
izin, namun saat Anda mengonversi ke Fungsi Bernilai Tabel, izin yang diperlukan berubahSELECT
.Kamu harus sekarang
GRANT SELECT ON functionName TO another_user;
Dari BOL :
sumber
grant select on functionName to [DOMAINNAME\username];
Perlu
GRANT SELECT ON functionName TO [another_user]
- dengan kurung.sumber
Saya mencoba menggunakan:
Tapi itu tidak bekerja, maka, saya menggunakan
EXECUTE
bukannyaSELECT
, dan bekerja sekarangsumber
grant execute
fungsi SQL akan selalu menimbulkan kesalahan.