Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вызов функции в ASA 5 / 5 сообщений из 5, страница 1 из 1
19.09.2008, 09:46
    #35548081
maks007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции в ASA 5
Добрый день.
С ASA работаю совсем немного, проблема собственно в следующем: написал такую вот функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
alter procedure "DBA".bpf_CheckDateInterval(in @SD datetime,in @ED datetime,in @Interval integer)
on exception resume
begin
  declare @res integer;declare @CurInt integer;declare @ErrorMsg varchar( 500 );
  select  1  into @res;
  select datediff(dd,@SD,@ED)+ 1  into @CurInt;
  select 'Îøèáêà. Îò÷åò íå áóäåò ñôîðìèðîâàí. Ïðåâûøåí èíòåðâàë â '||convert(varchar( 2 ),@Interval)||' äíåé.' into @ErrorMsg;
  if @CurInt>@Interval then
    select  0  into @res;
    raiserror  17999  @ErrorMsg
  end if
  ;
  return(@res)
end

вроде все нормально сохранилось, но когда я ее вызываю

Код: plaintext
select dba.bpf_CheckDateInterval ( '2008-01-01', '2008-01-21',  10  ) 

выдает ошибку "syntax error near '('" - а где тут ошибка ваще не пойму, может я в корне что-то не так делаю?
...
Рейтинг: 0 / 0
19.09.2008, 10:28
    #35548206
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции в ASA 5
maks007 пишет:

> может я в корне что-то не так делаю?

Ага. Берёшься за то, в чём ничего не понимаешь.

1. Продукта "ASA5" не существует ;).
2. Select из ХП появился в 9-й версии (и он всё равно не поможет).
3. Return value из ХП достают другим способом. Проще написать функцию
или возвращать значение через out - параметр.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
19.09.2008, 17:47
    #35549636
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции в ASA 5
maks007может я в корне что-то не так делаю?Перепутал procedure и function.

Код: plaintext
1.
2.
3.
4.
5.
6.
create function "DBA".bpf_CheckDateInterval(in @SD datetime,in @ED datetime,in @Interval integer)
returns integer
begin
    ..... дальше по тексту
    return (@res);
end;

А так же когда пишешь на WatcomSQL диалекте:
- Не стоит делать raiserror. Лучше использовать signal.
- Не забывай заканчивать каждую команду через точку с запятой .
- Не обязательно обозначать переменные через знак '@'.
...
Рейтинг: 0 / 0
19.09.2008, 23:22
    #35550015
pand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции в ASA 5
maks007Добрый день.


Код: plaintext
select dba.bpf_CheckDateInterval ( '2008-01-01', '2008-01-21',  10  ) 

выдает ошибку "syntax error near '('" - а где тут ошибка ваще не пойму, может я в корне что-то не так делаю?

и еще маленькое дополнение в вышесказанному
вызвать функцию в Sa 5 можно только без указания владельца

работать будет так
Код: plaintext
select bpf_CheckDateInterval ( '2008-01-01', '2008-01-21',  10  ) 

лечится это созданием функций от имени группы
в которую включаются пользователи имеющие право вызывать функцию
...
Рейтинг: 0 / 0
22.09.2008, 14:17
    #35552133
maks007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции в ASA 5
Всем спасибо, все получилось.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вызов функции в ASA 5 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]