Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / при компиляции sp запросы с временными таблицами не проверяются на корректность? / 18 сообщений из 18, страница 1 из 1
09.02.2021, 00:19
    #40043495
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
при компиляции sp запросы с временными таблицами не проверяются на корректность?

вот эта скомпилировалсь без вопросов, хотя не работает (и не должна, конечно)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
alter procedure p
as
begin

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp

create table #tmp(id int)

insert into #tmp
values(1,1,1)

select * from #tmp
where p.i.i.i.i.i.i.i = 1

end;
...
Рейтинг: 0 / 0
09.02.2021, 00:30
    #40043498
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx,

К примеру, как проверить, если идет работа с времянкой, созданной вне процедуры?
...
Рейтинг: 0 / 0
09.02.2021, 02:58
    #40043512
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx,


это называется deferred name resolution и такое поведение является штатным.
...
Рейтинг: 0 / 0
09.02.2021, 13:54
    #40043656
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx,

пишите тесты.
...
Рейтинг: 0 / 0
09.02.2021, 14:23
    #40043686
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
Критик
andreymx,

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


в данном случае у юзера все делается в одной процедуре
...
Рейтинг: 0 / 0
09.02.2021, 16:27
    #40043757
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
Владислав Колосов
andreymx,

пишите тесты.
или через табличные переменные
...
Рейтинг: 0 / 0
09.02.2021, 16:28
    #40043759
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
Ролг Хупин
Критик
andreymx,

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


в данном случае у юзера все делается в одной процедуре
в общем случае может быть десятки созданий/убийств времянок
гениальному программисту нет пределов
...
Рейтинг: 0 / 0
09.02.2021, 18:22
    #40043783
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx
при компиляции sp запросы с временными таблицами не проверяются на корректность?

вот эта скомпилировалсь без вопросов, хотя не работает (и не должна, конечно)

Ты не поверишь.
Даже с постоянными "не проверяется".
Если таблица в момент компиляции отсутствует.
...
Рейтинг: 0 / 0
09.02.2021, 19:41
    #40043797
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
aleks222
andreymx
при компиляции sp запросы с временными таблицами не проверяются на корректность?

вот эта скомпилировалсь без вопросов, хотя не работает (и не должна, конечно)

Ты не поверишь.
Даже с постоянными "не проверяется".
Если таблица в момент компиляции отсутствует.
проверил
Не врёшь
...
Рейтинг: 0 / 0
09.02.2021, 22:02
    #40043820
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx,

собственно, это и является причиной.
...
Рейтинг: 0 / 0
09.02.2021, 22:55
    #40043834
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
Владислав Колосов
andreymx,

собственно, это и является причиной.
что может являться причиной фантомных ошибок при компиляции пакета
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
USE [DevsEF]

GO

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp
GO
create table #tmp(id int)

SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[p]
as
begin

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp

create table #tmp(i1 int, i2 int, i3 int)

insert into #tmp
values(1,1,1)


end;

сообщение: 213, уровень: 16, состояние: 1, процедура: p, строка: 10 [строка начала пакета: 10]
Column name or number of supplied values does not match table definition.

Время выполнения: 2021-02-09T21:53:42.9649379+02:00
...
Рейтинг: 0 / 0
10.02.2021, 00:03
    #40043846
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx,

Этот вопрос освещён в справке. При компиляции используются метаданные существующей временной таблицы.
...
Рейтинг: 0 / 0
10.02.2021, 07:41
    #40043871
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
Владислав Колосов
andreymx,

Этот вопрос освещён в справке. При компиляции используются метаданные существующей временной таблицы.


Так же в справке настоятельно не рекомендуют иметь временные таблицы с одним именем но разной структурой на разных уровнях вложенности.
...
Рейтинг: 0 / 0
10.02.2021, 11:08
    #40043920
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
msLex
Владислав Колосов
andreymx,

Этот вопрос освещён в справке. При компиляции используются метаданные существующей временной таблицы.


Так же в справке настоятельно не рекомендуют иметь временные таблицы с одним именем но разной структурой на разных уровнях вложенности.
эээээ.... несколько многовато условностей при компиляции sp
буду привыкать к тому, что есть
в оракле с этой точки зрения более жестко, но проще сопровождать
если код компилируется, то весь синтаксис корректен, и все объекты/поля проверены на наличие и т.д.
отложенная проверка - только в динамическом коде

а "временные таблицы с одним именем но разной структурой на разных уровнях вложенности." просто невозможно создать
...
Рейтинг: 0 / 0
10.02.2021, 11:54
    #40043935
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx
а "временные таблицы с одним именем но разной структурой на разных уровнях вложенности." просто невозможно создать

Там просто невозможно создать вообще временные таблицы такие, как в MSSQL.
...
Рейтинг: 0 / 0
10.02.2021, 12:39
    #40043951
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
andreymx
если код компилируется, то весь синтаксис корректен,

А как же ORA-00979: not a GROUP BY expression в рантайме при успешной компиляции?

Просто разные подходы в разных СУБД, не надо пытаться проецировать одно на другое.

Сон Веры Павловны
просто невозможно создать вообще временные таблицы такие, как в MSSQL

Часть функционала, для которого используются времянки в Ms Sql покрывается коллекциями, часть возможностью материализации CTE в плане выполнения запроса.
...
Рейтинг: 0 / 0
10.02.2021, 12:55
    #40043954
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
env
Часть функционала, для которого используются времянки в Ms Sql покрывается коллекциями

Тем не менее эти коллекции должны быть созданы либо как глобальный, либо как пакетированный тип - просто на лету создать временную таблицу или её аналог, поиспользовать, и забыть не получится. И заполнение/модификация этих коллекций делается процедурным кодом, а не DDL. Можно вспомнить про GTT, но их определение тоже перманентно присутствует в базе (вследствие чего отпадает необходимость в deferred resolution). Так что действительно
env
Просто разные подходы в разных СУБД, не надо пытаться проецировать одно на другое.
...
Рейтинг: 0 / 0
10.02.2021, 13:09
    #40043962
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
при компиляции sp запросы с временными таблицами не проверяются на корректность?
env
А как же ORA-00979: not a GROUP BY expression в рантайме при успешной компиляции?
я уже плакался об этом в соответствующем форуме лет 10 назад
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / при компиляции sp запросы с временными таблицами не проверяются на корректность? / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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