|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
- вытекающей из этого сложностью определения количества и состава возвращаемых датасетов, без доступа к коду процедурыЕсли нет доступа к коду, то должен быть доступ к документации. Многодатасетность - зло. Как и переменое число полей. проблемой вызова подобной процедуры в курсореУточните, в чем проблема ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 10:33 |
|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
Владислав Колосов, Начнем с простого: в чем преимущества "канонического" подхода, если 1. Для получения результирующего набора необходимо использовать n-ое количество временных таблиц. 2. Для получения результирующего набора необходима смена контекста выполнения. 3. Необходима оптимизация (рефакторинг) запроса без прерывания работы приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 11:21 |
|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
Сложно сказать, что хорошо, а что плохо. Если не злоупотреблять при разработке крупных проектов, то, расширение возможностей процедур может быть оправданным, но не необходимым в большинстве случаев. В качестве отступления: бывают случаи, когда исправление бага приводит в неисправность все приложение из-за того, что последующие разработки опирались на использование этого бага. Так и с использованием процедур, возвращающих наборы данных. Наилучшим вариантом для самоконтроля кода было бы использование EXECUTE ... WITH RESULT SETS (). Такая конструкция позволяет использовать процедуры в SSIS источниках данных, например. Но на практике такое выражение используют редко. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 12:22 |
|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
Такая конструкция позволяет использовать процедуры в SSIS источниках данных, напримерСталкивался с такой "проблемой" : QlikView не хотел зачитывать ХП с датасетом. Зачитывал пусто. Оказалось, надо было просто выставить у ХП SET NOCOUNT ON. И все заработало. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 12:33 |
|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
Владислав Колосов fkthat, назначение процедуры - выполнять некоторые действия над данными, с параметрами или без. процедуры может возвращать значения в выходных параметрах. Клиентский запрос получения данных обрабатывается прямым запросом, представлением данных или функцией. Функции, будучи программным кодом, как и процедуры, не могут выполнять операций изменения данных, но могут их возвращать. Вроде бы это постулаты отцов-основателей. По крайней мере, я так запомнил. Да, вообще, мысль хорошая. Получается своего рода принцип CQS для БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 13:55 |
|
Как определить наличие двух SELECT в процедурах БД?
|
|||
---|---|---|---|
#18+
L_argo Такая конструкция позволяет использовать процедуры в SSIS источниках данных, например QlikView не хотел зачитывать ХП с датасетом. Зачитывал пусто. Оказалось, надо было просто выставить у ХП SET NOCOUNT ON. И все заработало. :) Ну да, вычитывался "как-бы-датасет" с содержимым типа "24 rows affected" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2020, 22:41 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685485]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 127ms |
0 / 0 |