powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Некорректная работа хранимой процедуры
10 сообщений из 35, страница 2 из 2
Некорректная работа хранимой процедуры
    #33937690
Татьяна В
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 antand
Процедура вызывается - вызывается. А что Вы там внутри написали - так она вам и возвращает.

точно так

на самом деле стОит проверить собственно данные, которые дергает из базы проца, похоже, что данные "глючат", то бишь разные исходные данные - разные результаты, все как учили

Ну оно понятно... с этого и начали - данные проверяли... и по аудиту в том числе... не менялись они в этот момент... и не должны были меняться...
понятно, что проблему тщательно искали в первую очередь у себя - может не так написали процедуру... или данные корявые... - но вся штука в том что ничего не нашли...
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33938168
Чудес не бывает, все они рукотворные.
Скорее всего, нужно пинять на себя.
Я как то обращался через наш, в большой Sybase с подобным но стабильным глюком.
Мне пришел ответ т.к. код процедур очень сложный проблему найти не удалось. Пришлось искать глючное место процедуры и переписывать другим кодом. Такие места бывают....
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33941869
panu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я опять повторюсь - чудес не бывает...
и всетаки проверять проверять и проверять как учил великий ...
и железо и тело процедуры и что она там вызывает
мне кажется проблема во втором скорее чем в первом.
С уважением
Александр Плотников.
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33961082
Татьяна В
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникли вопросы к специалистам в программировании на Transact-SQL:
1) Насколько необохима/желательна инициализация переменных (присвоение им начальных значений) в Transact-SQL?
2) Как влияет использование out параметра в объявлении переменных процедуры на зрачение этого параметра?
Пример:
create proc Proc1
(@str varchar(10) out)
as
begin
select * from Table1 where str=@str -- или любой другой код - не принципиально
end
go

create proc Proc2
as
begin
declare @str varchar(10)
exec Proc1 @str out
select @str
end
go

т.е. является ли ошибкой либо нежелательным стилем объявлять переменную @str как out в то время, как внутри вызываемой процедуры ей не присваиваются никакие значения?... может ли это вызвать какие либо ошибки или коллизии в распознавании переменных и соответственно присвоении им значений?...
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33961320
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> To Татьяна В

А что мешает внутри sp Proc1 сделать типа select @str = '', но это вряд ли поможет!!!
А проблема может быть в чём угодно, например индексы не подхватываются и их надо указывать принудительно!!!
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33961425
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Татьяна ВВозникли вопросы к специалистам в программировании на Transact-SQL:
1) Насколько необохима/желательна инициализация переменных (присвоение им начальных значений) в Transact-SQL?
2) Как влияет использование out параметра в объявлении переменных процедуры на зрачение этого параметра?
Пример:
create proc Proc1
(@str varchar(10) out)
as
begin
select * from Table1 where str=@str -- или любой другой код - не принципиально
end
go

create proc Proc2
as
begin
declare @str varchar(10)
exec Proc1 @str out
select @str
end
go

т.е. является ли ошибкой либо нежелательным стилем объявлять переменную @str как out в то время, как внутри вызываемой процедуры ей не присваиваются никакие значения?... может ли это вызвать какие либо ошибки или коллизии в распознавании переменных и соответственно присвоении им значений?...

Добрый день!
Это не является какой-то критичной ошибкой, все зависит от того что Вы потом делать будете с этой переменной(возвращаемым значением). Т.е. в данном случае Вам надо смотреть как эта переменная потом используется.
Я, например, всегда присваиваю такого рода переменным null или какое-то определенное начальное значение, чтобы быть
1) быть уверенным в правильности выборок и вычислений
2) легко проверить значение этой переменной далее(is null и т.п.)
Вот например пример кода в ASA 7, который может привести к ошибочным вычислениям
@str varchar(10)
select @str=str from Table1 where id=2
if @str is null
begin
.........
end
Здесь @str не инициализируется(и там не null) и если select не вернет не одной записи,
то блок begin не выполниться.
Это говорит о том, что при объявлении переменных @str varchar(10), в @str попадает "мусор" и только одному богу известно, что вернет например следующий оператор:
select * from Table1 where str=@str
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33966569
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Татьяна В1) Насколько необохима/желательна инициализация переменных (присвоение им начальных значений) в Transact-SQL?Этот вопрос не относится к Transact-SQL. Этот вопрос относится к первому месяцу изучения программирования вообще.

Татьяна В2) Как влияет использование out параметра в объявлении переменных процедуры на зрачение этого параметра?
Пример:
create proc Proc1
(@str varchar(10) out)
as
begin
select * from Table1 where str=@str -- или любой другой код - не принципиально
end
goЭтот код неверный. Параметр процедуры объявлен как out, а потом процедура используется для сравения. Результат процедуры абсолютно непредсказуем.

Татьяна Вт.е. является ли ошибкой либо нежелательным стилем объявлять переменную @str как out в то время, как внутри вызываемой процедуры ей не присваиваются никакие значения?Если переменной не присваиваются никакие значения значит эта перменная вообще не нужна. Если перменная используется для передачи параметров внутрь процедуры - она объявляется как IN и обязательно инциализируется перед вызовом процедуры.
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33966681
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl Татьяна В1) Насколько необохима/желательна инициализация переменных (присвоение им начальных значений) в Transact-SQL?Этот вопрос не относится к Transact-SQL. Этот вопрос относится к первому месяцу изучения программирования вообще.

Татьяна В2) Как влияет использование out параметра в объявлении переменных процедуры на зрачение этого параметра?
Пример:
create proc Proc1
(@str varchar(10) out)
as
begin
select * from Table1 where str=@str -- или любой другой код - не принципиально
end
goЭтот код неверный. Параметр процедуры объявлен как out, а потом процедура используется для сравения. Результат процедуры абсолютно непредсказуем.

Татьяна Вт.е. является ли ошибкой либо нежелательным стилем объявлять переменную @str как out в то время, как внутри вызываемой процедуры ей не присваиваются никакие значения?Если переменной не присваиваются никакие значения значит эта перменная вообще не нужна. Если перменная используется для передачи параметров внутрь процедуры - она объявляется как IN и обязательно инциализируется перед вызовом процедуры.

Тут даже добавить нечего, White Owl все четко указал.
to Татьяна В
Когда я писал что "Это не является какой-то критичной ошибкой...", я конечно имел ввиду что это не является ошибкой по отношению к серверу. Серверу все равно, что Вы там напишете в процедуре с точки зрения обработки данных, напишите что 2+2=5 так и будет.
Сервер тупо выполняет ваши инструкции в процедуре, лишь бы в этих инструкциях ошибки не было с точки зрения языка T-SQL и определения данных, в данном случае.
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33976077
Татьяна В
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl Татьяна В1) Насколько необохима/желательна инициализация переменных (присвоение им начальных значений) в Transact-SQL?Этот вопрос не относится к Transact-SQL. Этот вопрос относится к первому месяцу изучения программирования вообще.

Татьяна В2) Как влияет использование out параметра в объявлении переменных процедуры на зрачение этого параметра?
Пример:
create proc Proc1
(@str varchar(10) out)
as
begin
select * from Table1 where str=@str -- или любой другой код - не принципиально
end
goЭтот код неверный. Параметр процедуры объявлен как out, а потом процедура используется для сравения. Результат процедуры абсолютно непредсказуем.

Татьяна Вт.е. является ли ошибкой либо нежелательным стилем объявлять переменную @str как out в то время, как внутри вызываемой процедуры ей не присваиваются никакие значения?Если переменной не присваиваются никакие значения значит эта перменная вообще не нужна. Если перменная используется для передачи параметров внутрь процедуры - она объявляется как IN и обязательно инциализируется перед вызовом процедуры.

Благодарю за ответы.
Насколько мне известно по умолчанию переменные инициализируются NULL значениями?... Поправьте меня если я не права...

И еще... Думаю хорошим примером правильного написания процедур являются системные процедуры Sybase... Так вот в них зачастую переменные не инициализируются...
...
Рейтинг: 0 / 0
Некорректная работа хранимой процедуры
    #33976112
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Татьяна ВНасколько мне известно по умолчанию переменные инициализируются NULL значениями?... Поправьте меня если я не права...Да. Локальные переменные, объявленые внутри блока - инициализируются NULL'ом. Но к параметрам процедур это не относится.

Татьяна ВИ еще... Думаю хорошим примером правильного написания процедур являются системные процедуры Sybase... Так вот в них зачастую переменные не инициализируются...Скорее всего, в этих случаях инициализация просто не нужна. Возможно эта переменная будет проинициализирована чуть позже.
А вообще, никто вам не гарантирует отутствие ошибок в системных процедурах :) Эх, если бы их там не было....
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Некорректная работа хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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