|
|
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
имеется хранимая процедура sp_culc(var1,var2) как применить эту хранимку ко всем записям выборки и посчитать их сумму? желательно в одном запросе. что-нибудь типа SELECT SUM(EXEC sp_culc(field1,field2)) FROM table1 ругается на exec. как это можно реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 06:13:49 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Могу предложить один из вариантов: insert into временнаятаблица код процедуры.... select sum(поле временной табл.),sum(поле временной табл.)... from временная табл. drop временная табл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 06:44:39 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
нет, я не это имел в виду. у меня есть таблица table1 с полями field1 и field2. есть хранимая процедура sp_culc(var1,var2), которая в зависимости от двух входных параметров (в моем случае этими параметрами являются поля field1 и field2 таблицы table1) выдает какое-то значение. мне нужно посчитать сумму этих значений для всех записей выборки. т.е. если имеем слудущую таблицу field1 field2 -------------- 1 2 3 4 5 6 то мне нужен результат res = sp_culc(1,2) + sp_culc(3,4) + sp_culc(4,6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 06:57:09 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
А почему бы не написать новую процедуру? Вы не могли бы поточнее сказать, что нужно сделать с данными столбцов field1 и field1, сложить или умножить или выбрать что то еще, а потом получить сумму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 08:15:29 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
это не важно... (долго рассказывать, но это не линейная функция) если вы хотите предложить сначала сложить все столбцы, а потом вызвать один раз процедуру, то ничего не получится. т.к. sp_culc(1,2)+sp_culc(3,4) <> sp_culc(1+3,2+4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 08:55:16 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Проще всего сделать еще одну процедуру, ктр пробегает по всей выборке курсором /я предпочитаю цикл/ Что-то типа create table #stack(ii int,i1 int,i2 int) -- ii - уникальный declare @summa money declare @rr money select @summa=0 insert into #stack(ii,i1,i2) select ... declare @ii integer declare @i1 integer declare @i2 integer while exist(select * from #stack) begin select @ii=min(ii) from #stack select @i1=i1,@i2=i2 from #stack where ii=@ii exec sp_calc @i1,@i2,@rr OUTPUT select @summa=@summa+@rr delete from #stack where ii=@ii end drop table #stack ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 10:34:47 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
А что мешает сделать SELECT SUM(field1+field2) FROM table1 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 10:41:30 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
В виде, приведенном в исходном вопросе, вызываются не хранимые процедуры, а функции. Соответственно, если у вас SQL2000, можно попробовать воспользоваться UDF (если алгоритм вашей хранимой процедуры не нарушает требований для UDF). Либо воспользоваться курсором и временной таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 14:11:45 |
|
||
|
как вставить хранимую процедуру в sql-запрос?
|
|||
|---|---|---|---|
|
#18+
2 Garya: он у меня не хочет вызывать хранимую процедуру, говорит что не находит ее. может она должна быть определена как функция, а не как хранимая процедура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2002, 06:04:45 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3470&tid=1822534]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 413ms |

| 0 / 0 |
