Какова цель NVL, чтобы оценить оба аргумента?
Я обнаружил в этом вопросе - Oracle Differences между NVL и Coalesce - что NVL всегда оценивает оба аргумента.
NVL( string1, relace_with)
Какой смысл оценивать оба, если первый аргумент не нулевой?
Разве мы не будем всегда возвращать 1-й аргумент в таком случае?
Спасибо!
1 ответ
Решение
Дело, вероятно, в том, что могут быть побочные эффекты, так что важна не только возвращаемая величина обоих аргументов, но и их побочные эффекты. NVL не пропустит эти побочные эффекты, в то время как COALESCE пропустит побочные эффекты второго аргумента в некоторых случаях (из-за короткого замыкания). Поэтому NVL будет очень полезен в тех случаях (когда вы не хотите пропустить какие-либо побочные эффекты).