﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Базы Данных / Базы данных  / возвращение данных(+) / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 22 Nov 2008 19:58:18 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>Судя по синтатксису, ты используешь IB 6,х, у 7,х SET TERM уже не используется. Если бесплатный вариант 6,х, то там очень много ошибок. В ЖарПтице они уже давно исправлены, добавлены интересные возможности - select first 10 * from table, select skip 10 * from table - выбрать первые 10, пропустить первые 10; универсальные триггеры create trigger ai_trig for table after insert or update or delete, создать или изменить триггер/процедуру/просмотр(создается если нету такого, или делается альтер): create or alter trigger/procedure/view, пересоздание таблицы(насильное, если таблица с таким жек имене есть, то удаляется и создается с новой структурой):recreate tableб группировка по выражениям: select extract(year from doc_date) , sum(summa) from table group by extract(year from doc_date),sevapoint"ы - откат транзакции до сохраненной точки, в триггерах/процедурах можно в строковую переменную запихнуть запрос и затем его выполнить(как в Делфи например, ты можешь сконструировать текст SQL для TQuery): create procedure p1(tblname varchar(32))returns(id)asdeclare variable SQL varchar(1024); bregin   ...   SQL='select id from '||tblname;   for   EXECUTE STATEMENT SQL;   for execute statement       'select id from '||tblname into :id    do     suspend;    end;Или такое как ?  SELECT    o.ID,    o.Description,    CASE      WHEN (o.Status IS NULL) THEN 'new'      WHEN (o.Status = 1) THEN 'confirmed'      WHEN (o.Status = 3) THEN 'in production'      WHEN (o.Status = 4) THEN 'ready'      WHEN (o.Status = 5) THEN 'shipped'      ELSE 'unknown status ''' || o.Status || ''''    END  FROM    Orders oи многое другое. </description><pubDate>Tue, 31 Jan 2006 10:29:00 GMT</pubDate><dc:creator>vpanasenko</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>&gt; А че на InterBase "сидишь" ? Я использую FireBird 1.5.3. а чем она лучше?</description><pubDate>Tue, 31 Jan 2006 04:07:00 GMT</pubDate><dc:creator>doctor2l6</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>А че на InterBase "сидишь" ? Я использую FireBird 1.5.3. Ссылка - www.ibase.ru. Там много чего есть.. RETURNING можно использовать ТОЛЬКО в PSQL (т.е. триггерах/процедурах)procedure p1 as  declare variable v1 integer; begin   ...   execute procedure p2(:par1) returning values :v1;   if (v1=1) then   ... end</description><pubDate>Mon, 30 Jan 2006 11:09:00 GMT</pubDate><dc:creator>vpanasenko</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>спасибонеработает ругается на RETURNING.можешь мне дать ссылку на мануал по интербейсу.а то мой ваше сокращенный нифига нету этогобуду благодарен если даш ссылку на руссифицированный мануали тогда буду ртфм :)</description><pubDate>Mon, 30 Jan 2006 10:51:00 GMT</pubDate><dc:creator>doctor2l6</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>[quote="doctor2l6"]ну читал я это руководство, но нигде не видел запуск и возвращение данных с хранимой процедуры. Теперь понял, что мона и такБаза на интербейс сервере.Создал хранимые процедуры для добавления данных.Пишу дельфи приложение которое будет работать с базой.Например надо добавить данные, допустим норматив-передаются данные в процедуру(название раздела, название параметра, значение норматива).Та вызывает процедуру1 добавляения данных в табл1 разделов(название раздела и возвращет код), так же вызов процедуры2 добавления в табл2 параметров(название параметра и возвращет код). Затем вызывает процедуру3 добавления норматива в табл3 (код норматива, код раздела, код параметра, значение) [/quote]Если все тут написанное соответсвует действительности (в плане ПРОЦЕДУРА вызвает ПРОЦЕДУРУ1(название раздела и возвращет код)), то в ПОЦЕДУРЕ (опять же, энциклопию (RTFM (Reading The Fucking Manual)!!!) читать нужно) можно вызвать ПРОЦЕДУРУ1 в виде EXECUTE PROCEDURE PROC1(PAR1, PAR2..., PARn) RETURNING VALUES :RET_PAR1, :RET_PAR2,..., RET_PARn;</description><pubDate>Mon, 30 Jan 2006 10:38:00 GMT</pubDate><dc:creator>vpanasenko</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>ну читал я это руководство, но нигде не видел запуск и возвращение данных с хранимой процедуры. Теперь понял, что мона и такБаза на интербейс сервере.Создал хранимые процедуры для добавления данных.Пишу дельфи приложение которое будет работать с базой.Например надо добавить данные, допустим норматив-передаются данные в процедуру(название раздела, название параметра, значение норматива).Та вызывает процедуру1 добавляения данных в табл1 разделов(название раздела и возвращет код), так же вызов процедуры2 добавления в табл2 параметров(название параметра и возвращет код). Затем вызывает процедуру3 добавления норматива в табл3 (код норматива, код раздела, код параметра, значение) </description><pubDate>Mon, 30 Jan 2006 10:14:00 GMT</pubDate><dc:creator>doctor2l6</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>[quote="doctor2l6"]добавил строчку SUSPEND.но как воспользоваться этой задержкой так и не понял. пробовал всякое.В дельфи, компонент IBQuery1, добавил 5 параметров: p1, p2, p3, p4, p5 - результирующий. скл выражение: Add('EXECUTE PROCEDURE add_razdel (:p1, :p2, :p3, :p4)'); Пытаюсь p5 прописать. но везде кричит ошибка,хотя в процедуре описан же возвращаемый элемент[/quote]Конечно будет кричать... Галиматью написал...Руководство пользователя надо читать..Хотя бы иногда, когда уже ничего не помогает... Для выборки значений используется конструкция SELECT .. FROM... Потому вид выборки д.б такой: SELECT * FROM Add_Razdel(:p1, :p2, :p3, :p4)... Этот SELECT и вернет ICOD.Ты, кстати, что вообще хочешь сделать ? Что-то тут на ерунду какую-то похоже...</description><pubDate>Mon, 30 Jan 2006 09:47:00 GMT</pubDate><dc:creator>vpanasenko</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>добавил строчку SUSPEND.но как воспользоваться этой задержкой так и не понял. пробовал всякое.В дельфи, компонент IBQuery1, добавил 5 параметров: p1, p2, p3, p4, p5 - результирующий. скл выражение: Add('EXECUTE PROCEDURE add_razdel (:p1, :p2, :p3, :p4)'); Пытаюсь p5 прописать. но везде кричит ошибка,хотя в процедуре описан же возвращаемый элемент</description><pubDate>Mon, 30 Jan 2006 03:47:00 GMT</pubDate><dc:creator>doctor2l6</dc:creator></item><item><title>RE: возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>[quote="doctor2l6"]Напмсана хранимая процедура:set term !! ;create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)   returns (icod integer) asbegin  Select codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into icod;  if (:icod != 0) then exit;  icod = gen_id (newcod1, 1);  Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);end !!set term ; !!теперь надо из дельфи приложения получить icod. который является returns.Чето ваше не получилось. Помогите как взять icod или переписать надо хранимую процедуру??[/quote]Блин, когда тут научатся вопросы задавать ? Хотя бы тип БД указал .Я то вижу, что IB/FB, но другие могут и не увидетьset term !! ;create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)returns (icod integer)asbeginSelect codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into :icod;if (:icod != 0) then exit;icod = gen_id (newcod1, 1);Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);SUSPEND;end !!set term ; !!</description><pubDate>Fri, 27 Jan 2006 09:46:00 GMT</pubDate><dc:creator>vpanasenko</dc:creator></item><item><title>возвращение данных(+)</title><link>http://www.relib.com/forums/Topic889569-2-1.aspx</link><description>Напмсана хранимая процедура:set term !! ;create procedure add_Razdel (iur integer, iup integer, sname Varchar(255), inorm integer)   returns (icod integer) asbegin  Select codraz from Razdel where (urovraz=:iur)and(upraz=:iup)and(nameraz=:sname) into icod;  if (:icod != 0) then exit;  icod = gen_id (newcod1, 1);  Insert into Razdel (codraz, urovraz, upraz, nameraz, normraz) values (:icod, :iur, :iup, :sname, :inorm);end !!set term ; !!теперь надо из дельфи приложения получить icod. который является returns.Чето ваше не получилось. Помогите как взять icod или переписать надо хранимую процедуру??</description><pubDate>Fri, 27 Jan 2006 09:12:00 GMT</pubDate><dc:creator>doctor2l6</dc:creator></item></channel></rss>