|
|
|
Вызов процедуры в select
|
|||
|---|---|---|---|
|
#18+
blakitti CREATE PROCEDURE dbo.sum_commis @sum_op money, @type_com tinyint AS declare @sum_s1 money declare @sum_s2 money declare @fix smallmoney declare @pr numeric(8,7) declare @sum_com numeric(16,6) declare @res numeric(16,6) BEGIN select @sum_s1=isNull(S1,0), @sum_s2=isnull(S2,0), @fix=FIX, @pr=PERCENT from C where TYPE_COM = @type_com select @sum_com = @sum_op*@pr+@fix if @sum_com < @sum_s1 select @res = @sum_s1 else if @sum_com > @sum_s2 and @sum_s2 <> 0 select @res = @sum_s2 else select @res = @sum_com END create existing table dbo.commis_summ (_res numeric(16,6) null , _sum_op money null , _type_com tinyint null) external procedure at 'loopback.MAIN.dbo.sum_commis' go Poprobuite vmesto numeric i money dlys prostoty ispolzovat integer. Mozet bit problema s tipami dannih? Pri takom reshenii vse mozet bit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 23:37 |
|
||
|
Вызов процедуры в select
|
|||
|---|---|---|---|
|
#18+
blakitti CREATE PROCEDURE dbo.sum_commis @sum_op money, @type_com tinyint AS declare @sum_s1 money declare @sum_s2 money declare @fix smallmoney declare @pr numeric(8,7) declare @sum_com numeric(16,6) declare @res numeric(16,6) BEGIN select @sum_s1=isNull(S1,0), @sum_s2=isnull(S2,0), @fix=FIX, @pr=PERCENT from C where TYPE_COM = @type_com select @sum_com = @sum_op*@pr+@fix if @sum_com < @sum_s1 select @res = @sum_s1 else if @sum_com > @sum_s2 and @sum_s2 <> 0 select @res = @sum_s2 else select @res = @sum_com END create existing table dbo.commis_summ (_res numeric(16,6) null , _sum_op money null , _type_com tinyint null) external procedure at 'loopback.MAIN.dbo.sum_commis' go Poprobuite zamenit vse tipi na int. Prosto dla experimenta. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 23:41 |
|
||
|
Вызов процедуры в select
|
|||
|---|---|---|---|
|
#18+
KruA sam select rabotaet bez insert? нет.....не работает :-( тоже на план ругается.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 11:54 |
|
||
|
Вызов процедуры в select
|
|||
|---|---|---|---|
|
#18+
KruPoprobuite vmesto numeric i money dlys prostoty ispolzovat integer. Mozet bit problema s tipami dannih? Pri takom reshenii vse mozet bit. сделала так CREATE PROCEDURE dbo.sum_commis @sum_op integer, @type_com tinyint AS declare @sum_s1 money declare @sum_s2 money declare @fix smallmoney declare @pr numeric(8,7) declare @sum_com numeric(16,6) declare @res integer BEGIN select @sum_s1=isNull(S1,0), @sum_s2=isnull(S2,0), @fix=FIX, @pr=PERCENT from C where TYPE_COM = @type_com select @sum_com = @sum_op*@pr+@fix if @sum_com < @sum_s1 select @res = convert(int,@sum_s1) else if @sum_com > @sum_s2 and @sum_s2 <> 0 select @res = convert(int,@sum_s2) else select @res = convert(int,@sum_com) END create existing table dbo.commis_summ (_res ineger null , _sum_op ineger null , _type_com tinyint null) external procedure at 'loopback.MAIN.dbo.sum_commis' go все равно не получилось добавить в таблицу.....и select не проходит.....по прежнему ругается на план :-(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 12:00 |
|
||
|
Вызов процедуры в select
|
|||
|---|---|---|---|
|
#18+
Попробуйте начать с простого - в процедуре сделайте все типы int. Если не поможет, то если, как Вы написали, мой вариант работает, то попробуйте постепенно усложнять мою процедуру. Очень вероятно, что так получится найти что не работает. Мне самому интересно попробовать, но времени нет и тоже дома у меня мой сценарий не до конца работает, хотя select из прокси процедуры нормально отрабатывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 17:57 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34864124&tid=2011875]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 520ms |

| 0 / 0 |
