sybase 用户定义函数 - “非确定性”或“非法内置函数”错误

Posted

技术标签:

【中文标题】sybase 用户定义函数 - “非确定性”或“非法内置函数”错误【英文标题】:sybase user defined function - "non deterministic" or "illegal built-in function" error 【发布时间】:2010-01-08 17:32:15 【问题描述】:

尝试在 sybase 15+ 上创建用户定义函数 (UDF) 时,您可能会收到以下错误: “标量 SQL 函数中的非法内置函数语句” 这是 b/c “非确定性”函数,例如 getdate()、rand()、newid(),在 UDF 中是不允许的。

有没有办法绕过这个限制?

请注意,我计划在这里回答我自己的问题。

【问题讨论】:

【参考方案1】:

解决办法是创建一个视图如:

create view vGetDate as select getdate() as gtdt

然后在 UDF 中从该视图中选择:

create function udf_getdate
returns datetime
as
declare @gd datetime
select @gd=gtdt from vGetDate
return @gd
go

现在调用函数:

select dbo.udf_getdate()

【讨论】:

以上是关于sybase 用户定义函数 - “非确定性”或“非法内置函数”错误的主要内容,如果未能解决你的问题,请参考以下文章

sql 分区函数中的非确定性函数

超图可以表示非确定性图灵机吗?

在创建掩码返回案例语句中使用非确定性函数时出现问题

Coq 中具有非确定性组件的数据结构

自动检测 Python 中的非确定性行为

你如何使用 list monad 来计算/表示非确定性计算的结果?