Какова цель NVL, чтобы оценить оба аргумента?

Я обнаружил в этом вопросе - Oracle Differences между NVL и Coalesce - что NVL всегда оценивает оба аргумента.

NVL( string1, relace_with)

Какой смысл оценивать оба, если первый аргумент не нулевой?

Разве мы не будем всегда возвращать 1-й аргумент в таком случае?

Спасибо!

1 ответ

Решение

Дело, вероятно, в том, что могут быть побочные эффекты, так что важна не только возвращаемая величина обоих аргументов, но и их побочные эффекты. NVL не пропустит эти побочные эффекты, в то время как COALESCE пропустит побочные эффекты второго аргумента в некоторых случаях (из-за короткого замыкания). Поэтому NVL будет очень полезен в тех случаях (когда вы не хотите пропустить какие-либо побочные эффекты).

Другие вопросы по тегам