Объединение целых и преобразование во временной формат - PullRequest
0 голосов
/ 02 марта 2011

Я работаю с SQL Anywhere и пишу функцию, и у меня возникла небольшая проблема с преобразованием целых чисел (часов и минут) во время. Вы можете мне помочь?

ALTER FUNCTION "DBA"."VisitTime"
RETURNS TIME
DETERMINISTIC
BEGIN
     DECLARE "timeV" time
     DECLARE hourV integer;
     DECLARE minuteV integer;
     DECLARE minutesV integer;
     SELECT HOUR(CURRENT TIME) as hourV;
     SELECT MINUTE(CURRENT TIME) as minuteV;
     IF minuteV BETWEEN 0 and 29
     THEN SET minutesV = 30;
     END IF;
     IF minuteV between 30 and 59
     THEN SET minutesV = 00;
          SET hourV = hourV + 1;
          IF hourV >= 24 THEN SET hourV = 0;
          END IF;
     END IF;

     SET timeV = CAST(hourV || ':' || minutesV as time);
RETURN "timeV";
END;

Что я делаю не так? Когда я пытаюсь выполнить это, у меня появляется ОШИБКА («Набор результатов не разрешен в VisitTime»)

1 Ответ

0 голосов
/ 02 марта 2011

Я не sqlanywhere парень, но детерминированный означает, что при одинаковых данных и одинаковом вводе / запросе вы получите одинаковый вывод.Говорят иначе (документация по SQL Server)

Детерминированные функции всегда возвращают один и тот же результат каждый раз, когда они вызываются с определенным набором входных значений и при одинаковом состоянии базы данных.Недетерминированные функции могут возвращать разные результаты каждый раз, когда они вызываются с определенным набором входных значений, даже если состояние базы данных, к которой они обращаются, остается неизменным.делая функцию недетерминированной, потому что простой ход времени приводит к разным результатам.

...