我做得对吗……?
我有一个返回钱的函数...
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
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是否可以转换为 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
Run Code Online (Sandbox Code Playgroud)
错误:
消息 4606,级别 16,状态 1,第 2 行授予或撤销特权 …
我知道问这个问题有点愚蠢,但是否有 Transact-SQL 函数或任何返回所有CONVERT(datetime)样式(格式)的函数?类似的东西fnDateFormats将返回所有日期格式:
输出:
日期格式 | SQL代码 月/日/年 101
等等。
我正在优化用游标编写的存储过程(DECLARE cur_name CURSOR ...
客户看到这个 SP 运行了一天多,所以我的经理分配给我。
搜索时,我使用表变量和 while 循环来迭代每条记录。
令我惊讶的是,两者之间的差异是巨大的。
有人告诉我,while 循环本质上是一个 CURSOR。
但是当我使用带有 WHILE LOOP 的表变量时,它运行得非常非常快。
现在,游标在内部做了什么?