Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Добрый день Уважаемые! Буду благодарен за Ваш совет! Есть желание, в хранимую процедуру передать набор значений (например, идентификаторов) в виде переменой типа table или временной таблицы, чтобы потом выполнив соелинение (join) отобрать только нужные мне данные. Несмотря на то, что я не нашел в документации информации про невозможность такого подхода (решить "в лоб" не получилось), лучшее что я придумал передавать эти идентификаторы в виде строки значений, выполняя формирование таблицы идентификаторов внутри хранимой процедуры (не создавать же конструкцию "where [...] in (ID1, ID2,...IDn)"). Конечно некрасиво, но что делать? С другой стороны у меня ощушение, что существует более корректное решение этой задачки!? С Уважением Александр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2002, 21:25 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
BOL - Creating and Maintaining Databases - Tables - Designing Tables - Specifying a Column Data Type - Special Data "The table data type can be used only to define local variables of type table or the return value of a user-defined function." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 07:15 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Ну так через временную таблицу можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 09:02 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Если у Вас 2000-й, напишите функцию, которая из строки делает таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 09:53 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Да, тяжело жить без макроподстановок. Почитай статью о динамическом создании SQL на этом сайте, может натолкнет на какие-нибудь идеи: http://www.sql.ru/articles/mssql/02030102WhenToUseDynamicSQL.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2002, 16:26 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, что не оставили без внимания мой вопрос, но я чувствую, что не совсем точно изложил его суть, не написав, зачем мне это нужно С целью упростить логику работы базы я хотел создать ряд абстрактных хранимых процедур, которые можно было бы повторно использовать в большинстве случаев. Проблема заключается в том, что я не могу сделать универсальную хранимую процедуру (например для расчета остатков) которая бы работала с набором идентификаторов (товаров), которые ничем не связаны между собой Если есть, какая-нибудь сущность их объединяющая, например все товары находятся в одном документе, или в одной ветви классификатора - все просто: передаю ид связывающей сущности, внутри процедуры разворачиваю его в набор товаров (хотя и в этом случае придется создавать, или разные хранимки, или усложнять проц. IF-ами, в зависимости от типа связывающей сущности) Несколько логичней было бы (мне так кажется), сначала сформировать набор идентификаторов (например из 1докум + 2докум + nдокум, или указать руками "хочу это, это и это"), а потом передать этот набор в другую хранимку в качестве параметра и на выходе получить результат (те же остатки) Использовать здесь временную таблицу, как советовал tygra, удачно не получилось (тормозит жутко, а даже посмотреть план запроса не получается, так как я в этой хранимке ссылаюсь на временную таблицу, о которой msSQL "ничего не знает"). Использовать строку для передачи идентификаторов пробовал, как узкоспециализированный вариант - сойдет, но универсальный врядли (ограничение на длину, да и не очень красиво - то) Насколько я понял, скорее всего, нет стандартных вариантов решения этой проблемки. Жаль, конечно, многие вещи можно было бы сделать лучше и проще. С Уважением Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2002, 19:36 |
|
||
|
Можно ли в качестве параметра хранимой процедуры указать переменную табличного т
|
|||
|---|---|---|---|
|
#18+
Тогда используй обычную таблицу, типа ID, Sender_ID, где первое поле - это идентификатор товара, вторая - какой-то идентификатор объекта, который в эту таблицу данный ID товара положил. А в процедуру передавай только идентификатор объекта. Тогда по нему найдешь все идентификаторы товара, которые передал в данный момент. Тогда не будет пересечений между ID товара и работать будет как обычная таблица (и планы и т.д.). Только нужно убивать то, что передавал, в какой-то момент, чтобы не копилось в этой таблице. Ну типа, формируешь набор, передаешь, получаешь результат, убиваешь набор. Вроде всем требованиям отвечает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2002, 06:27 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1823384]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 356ms |

| 0 / 0 |
