Возврат пустого или нулевого в процедуре sql - PullRequest
0 голосов
/ 19 сентября 2018

С помощью сценария, который не принимает значение NULL, но Nan, я пытаюсь вставить нулевое значение вместо 0 в таблицу сервера SQL.Поэтому для этого у меня была идея создать хранимую процедуру, которая будет приводить Nan к нулевому плавающему значению.вот хранимая процедура:

create procedure [dbo].fromNanToNull(@val VARCHAR)
   AS BEGIN
   DECLARE @Work float
   if @val like 'N%'    set @Work=CAST(NULL AS float)
   else set @work=CAST(@val AS float)
    return @work
   END

Выполнение:

 exec  [dbo].fromNanToNull 'Nan'

, но вместо того, чтобы получить нуль в ответ, я получил это сообщение, которое сообщает, что возврат принудительно равен 0.Вот сообщение:

Процедура fromNanToNull попыталась вернуть состояние NULL, что недопустимо.Вместо этого будет возвращено состояние 0.

1 Ответ

0 голосов
/ 19 сентября 2018

Насколько я понимаю, @val начинается с n означает, что вы конвертируете значение @work в float, но даже @work является типом данных float, только если @val начинается с n, значит, вы должны отображать значение @work, иначе значение таблицы, пожалуйста, объясните четко

    CREATE PROCEDURE [DBO].FROMNANTONULL(@VAL VARCHAR)
       AS BEGIN
      DECLARE @VAL VARCHAR(10)
 DECLARE @WORK FLOAT
IF (@VAL LIKE 'N%') 
  BEGIN 
SET @WORK=CAST(NULL AS FLOAT)
  END 
ELSE 
  BEGIN 
SET @WORK=CAST(@VAL AS FLOAT)
  END
       END
...