powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / при компиляции sp запросы с временными таблицами не проверяются на корректность?
18 сообщений из 18, страница 1 из 1
при компиляции sp запросы с временными таблицами не проверяются на корректность?
    #40043495
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при компиляции 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
при компиляции sp запросы с временными таблицами не проверяются на корректность?
    #40043498
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

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


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

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

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


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

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

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


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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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


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