|
|
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Помогите сформировать запрос вида SELECT :PARAM1 FROM T При попытке выполнить такой запрос выдается ошибка: An error was found in the application program input parameters for the SQL statement. Dynamic SQL Error. SQL error code = -804. Data type unknown. Только не надо отвечать мне "А зачем тебе такой запрос", в исходном варианте он выглядит немного иначе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 11:49 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
автор писал:Только не надо отвечать мне "А зачем тебе такой запрос", А он сам напрашивается !!! Это аналогично вот этому : Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 11:55 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Выдается ошибка потому что ты хочешь в качестве параметра передать имя таблицы, что не разрешается. Параметр не передает метаданные, как то название таблиц, полей и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 11:56 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Ну а если конкретно, то можно, но только в версии FB 1.5 Там есть execute statement, смотри доку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 11:57 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:00 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Sclif81 автор писал:Выдается ошибка потому что ты хочешь в качестве параметра передать имя таблицы, что не разрешается. Параметр не передает метаданные, как то название таблиц, полей и т.п. А вот и можно !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:02 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Объясняю ситуацию конкретнее. Данная выборка уже прекрасно реализована с помощью хранимой процедуры. Но надо отказаться от хранимых процедур (требования к программе). Есть задача: 1. Вначале расчитывается полная сумма. 2. Рассчитываются суммы 3-и барьеров a) сумма покупки < 100грн b) 100<сумма покупки<200 c) сумма покупки > 200грн 3. Расчитать отношения сумм барьеров к общей сумме Я хотел в первом запросе высчитать суммы, а в другом отношения сумм барьеров!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:10 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
А вообще запрос должен выглядеть так: SELECT '<'||:Barrier1,Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE (Total < :Barrier1) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) UNION SELECT CAST('>='||:Barrier1||' - <'||:Barrier2 AS VARCHAR(60)),Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE ((Total >= :Barrier1) AND (Total < :Barrier2)) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) UNION SELECT CAST('>='||:Barrier2||' - <'||:Barrier3 AS VARCHAR(60)),Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE ((Total >= :Barrier2) AND (Total < :Barrier3)) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) UNION SELECT CAST('>='||:Barrier3||' - <'||:Barrier4 AS VARCHAR(60)),Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE ((Total >= :Barrier3) AND (Total < :Barrier4)) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) UNION SELECT CAST('>='||:Barrier4||' - <'||:Barrier5 AS VARCHAR(60)),Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE ((Total >= :Barrier4) AND (Total < :Barrier5)) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) UNION SELECT CAST('>= '||:Barrier5 AS VARCHAR(60)),Z(SUM(Actual)),COUNT(Id),Round(100*Z(SUM(Total))/:SumAll,2),Round(100*COUNT(Id)/:CountAll,2) FROM Opers WHERE (Total >= :Barrier5) AND (RDB$Modified <> 1) AND (DateOnly BETWEEN :DateMin AND :DateMax) AND ((:DEPARTID = 0) OR ((:DEPARTID <> 0) AND (departid = :DEPARTID))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:15 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Боюсь что без ХП не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:16 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Есть такая особенность парсера. В FB1.5 Д. Еманов советовал использовать COALESCE, т.е. SELECT COALESCE(:PARAM1 ,'') FROM T ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:27 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
А пробовал использовать ф-ю Z(x) из модуля rfunc.dll Но в результате получил полный бред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:33 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
2 Dnico Я не юзал FB, только IB, в 6-ке точно не было такого. Это только особенность FB1.5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:34 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Sclif81 Да, это новшества FB 1.5 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 12:37 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
SELECT COALESCE(:PARAM1 ,'') FROM T на FB1.5 не работает !!! Dynamic SQL Error. SQL error code = -303. arithmetic exception, numeric overflow, or string truncation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 15:40 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
А ты чего в этот параметр засунул? Ты ж во второй части COALESCE напиши соотв. значение типу, который передал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 15:45 |
|
||
|
Параметр в выборке
|
|||
|---|---|---|---|
|
#18+
Блин, прогнал:) Поставил во второй параметр 0 и получил то что нужно, правда осталась еще одна проблемка - использование FB1.5 нежелательно:( Может эту ф-ю смогут заменить некоторые другие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32301148&tid=1579777]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 485ms |

| 0 / 0 |
