为nvl()编写一个isnull()包装器

Sam*_*m M 1 oracle plsql

我们正在将数据库从Oracle迁移到SQL Server.我的查询广泛使用了Oracle的nvl函数.在SQL Server中,要使用的函数是isnull().如果可能的话,我想通过将它们更改为使用isnull()来开始准备我的查询,同时仍然在Oracle上.我的想法是在我的模式中创建一个包装函数isnull()并更改我的查询以使用该函数.这样,当我们切换数据库平台时,我的查询已经在使用新功能.

有没有办法在Oracle中创建一个名为isnull()的包装器函数,它接受并返回任何数据类型?或者我只需要有多个isnull()声明,为所有预期的数据类型重载?

Bri*_*ire 9

另一种方法可能是使用COALESCE而不是NVL,因为COALESCEOracle和SQL Server中的语法相同.尽管如此,在Oracle和SQL Server中使用相同的SQL(或者甚至可以工作)的目标(如果是您的目标)可能并不现实.