powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Могут ли функции или процедуры за параметр принимать целую таблицу?
9 сообщений из 9, страница 1 из 1
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083324
sysn1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значения параметра, переданные при вызове процедуры, должны быть константами или переменными - оффишил документация.
У функций тоже самое? То есть таблицы не могут быть параметрами, только их столбцы или числа?
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083333
sysn1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функция может принимать другую функцию. А сработает функция, если вложенная функция выводит таблицу (RETURNS TABLE)?
Например:
Код: sql
1.
SUM (SOME_FUN_TABLE(@параметр))
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083342
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysn1k
Значения параметра, переданные при вызове процедуры, должны быть константами или переменными - оффишил документация.
У функций тоже самое? То есть таблицы не могут быть параметрами, только их столбцы или числа?


Ваще то, табличные аргументы процедур имеют место быть.
https://www.sqlshack.com/table-valued-parameters-in-sql-server/
Только не надо это.
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083377
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222

Только не надо это.

Почему, кстати?
Какие противопоказания?
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083387
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster
Какие противопоказания?
Отсутствие alter type.
Если нужно изменить табличный тип, который уже используется в модулях, придется задействовать грязный хак.
А если какие-то модули привязаны к схеме, то все будет совсем печально.
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083393
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysn1k,

вы можете, например, передать параметром имя таблицы или целое SQL-предложение
и далее в процедуре использовать для динамического SQL (dynamic SQL)

т.е. вы в процедуре формируете VARCHAR строку, содержащую SQL-запрос к, например, таблице, имя которой вы передали параметром процедуры. Ещё одним параметром, например, передаёте WHERE-часть. Этот запрос выполняете и что-то с результатами делаете.


https://web-shpargalka.ru/ms-sql-dynamic-sql.php
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083602
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
uaggster
Какие противопоказания?
Отсутствие alter type.
Если нужно изменить табличный тип, который уже используется в модулях, придется задействовать грязный хак.
А если какие-то модули привязаны к схеме, то все будет совсем печально.

Это про sp_rename ?
А что в нем грязного? Примерно как order by 1/0 или Select @s=@s+strVield from tbl
...
Рейтинг: 0 / 0
Могут ли функции или процедуры за параметр принимать целую таблицу?
    #40083665
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пользоваться современными методами разработки, т.е. при помощи проекта, то студия сама автоматизирует все обновления и переименования. Но надо помнить, что это может вылиться в пересоздание массы объектов с заполнением данными.

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

Ну, использование простых UDTT (по факту - массивов примитивов: таблица интов, таблица гуидов) пока что не подводило, и альтерить в таких типах просто нечего. Если в UDTT начинают расширяться-добавляться поля, то да, проще использовать альтернативные методы - временные таблицы, xml, итд.
uaggster
Это про sp_rename ?
А что в нем грязного?

То, что если UDTT задействован в schema-bound модуле, то этот хак не сработает. Придется сначала отвязать от схемы энное количество модулей, и эта цепочка (а её ещё нужно выяснить по зависимостям модулей) может быть длинной.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Могут ли функции или процедуры за параметр принимать целую таблицу?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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