Для получения данных из таблиц, можно использовать запросы. Запросы можно выполнять обращаясь к БД извне, а можно встраивать в процедуры.
Недавно произошла забавная ситуация. При подключении к БД firebird и попытке выполнить запрос следующего содержания:
select sum( tmp_g_doc.kolfakt), cardscla.articul from tmp_g_doc
left join cardscla on (tmp_g_doc.kod = cardscla.comment)
where tmp_g_doc.nsopr='текст'_id group by cardscla.articul
begin
for select sum( tmp_g_doc.kolfakt), cardscla.articul from tmp_g_doc
left join cardscla on (tmp_g_doc.kod = cardscla.comment)
where tmp_g_doc.nsopr=:doc_id group by cardscla.articul
into :quantity, :art;
suspend;
end
begin
for select sum( tmp_g_doc.kolfakt), cardscla.articul from tmp_g_doc
left join cardscla on (tmp_g_doc.kod = cardscla.comment)
where tmp_g_doc.nsopr=:doc_id group by cardscla.articul
into :quantity, :art
do
begin
suspend;
end
SET TERM ^ ;
create or alter procedure A_COLLATE_Q (
DOC_ID varchar(100))
returns (
ART varchar(10),
QUANTITY varchar(10))
as
begin
for select sum( tmp_g_doc.kolfakt), cardscla.articul from tmp_g_doc
left join cardscla on (tmp_g_doc.kod = cardscla.comment)
where tmp_g_doc.nsopr=:doc_id group by cardscla.articul
into :quantity, :art
do
begin
suspend;
end
end^
SET TERM ; ^
GRANT SELECT ON TMP_G_DOC TO PROCEDURE A_COLLATE_Q;
GRANT SELECT ON CARDSCLA TO PROCEDURE A_COLLATE_Q;
GRANT EXECUTE ON PROCEDURE A_COLLATE_Q TO SYSDBA;
select * from A_COLLATE_Q('текст')
Новые комментарии