Конференция "Базы" » Не удается выполнить хранимую процедуру Firebird. [D7, FireBird]
 
  • Доброй ночи!
    Есть такая вот проблема:

    Используется Firebird 2.1, в качестве провадера данных - FreeIBProvider 3 Через TAdostoredProc пытаюсь вызвать хранимую процедуру:


    FSP.Close;
    FSP.ProcedureName := 'Procedure_Name';
    FSP.Parameters.Clear;

    with FSP.Parameters.AddParameter do begin
      DataType  := ftString;
      Direction   := pdInput;
      Name       :=  'ParamName1';
      Value       := 'ParamValue1';
    end;

    with FSP.Parameters.AddParameter do begin
      DataType  := ftString;
      Direction   := pdInput;
      Name       :=  'ParamName2';
      Value       := 'ParamValue2';
    end;



    Оно мне в ответ на это ругается:
    привязка:0 - Неправильный номер [1] привязки входящего параметра. Диапазон [1..0].

    Причем перед этим через этот же FSP вызывается процедура проверки логина, она отрабатывает нормально. Что я делаю не так?
  • Кщд (10.04.09 07:08) [1]
    где сигнатура процедуры?
  • PEAKTOP © (10.04.09 13:36) [2]
    > Используется Firebird 2.1, в качестве провадера данных -
    >  FreeIBProvider 3 Через TAdostoredProc пытаюсь вызвать хранимую
    > процедуру:


    Зачем ?
    Ничто не дается бесплатно, а цена универсальности (ADO) - скорость.

    Сдается мне, это стук в подвале CHARACTER SETS твоих строковых параметров.

    Протокол передачи идентификатора чарсета в API-функциях от сервера клиенту (в данном случае, твоему провайдеру) у InterBase и Firebird до1.5  и у Firebird старше 2.1 отличается. Об этом много писал Дима Коваленко (http://www.ibprovider.com/rus/) в форуме Firebird Foundation.

    О чем, кстати и написано в пресс-релизе FreeIBProvider 3, что Firebird 2.1 и выше он не поддерживает (http://www.ibprovider.com/rus/documentation/differences_between_versions.html).

    Та что либо купи коммерческую версию, поддерживающую чарсеты, либо пользуй FIBPlus, как делают все Delphi-сты.
  • Кщд (10.04.09 14:36) [3]
    >PEAKTOP ©   (10.04.09 13:36) [2]
    ценю Ваш телепатор)

    Кевларвестов Семен   (10.04.09 01:34)  
    взгляните на: http://www.ibprovider.com/forum/site/viewtopic.php?t=72
    не Ваш случай?
  • PEAKTOP © (10.04.09 20:50) [4]
    > >PEAKTOP ©   (10.04.09 13:36) [2]
    > ценю Ваш телепатор)


    Хрустальный шар последней модели :)
  • А, простите, что имеется в виду под сигнатурой?

    Я так понял, что заголовок функции, с объявиловом того что я ей передаю и что ожидаю получить?


    CREATE OR ALTER PROCEDURE SELECT_PERMISSION (
       Userid Varchar(38) = Null,
       Sessionid Varchar(38) = Null)
    Returns (
       Permissionname Varchar(50))



    То что Free не держит Сервер 2.1, возможно. Но чего ж ради он первую процедуру отрабытвает нормально? А там и набор данных поинтересней будет:

    CREATE OR ALTER PROCEDURE CHECK_LOGIN (
       Login Varchar(100) Character Set Win1251,
       "Password" Varchar(100) Character Set Win1251)
    Returns (
       Sessionid Varchar(38) Character Set Win1251,
       Visibility Varchar(100) Character Set Win1251,
       Username Varchar(100) Character Set Win1251,
       Userid Varchar(38) Character Set Win1251,
       "Role" Varchar(25) Character Set Win1251,
       Pwdlastchange Date,
       Pwddays Integer,
       Postid Varchar(38) Character Set Win1251,
       Enddate Date,
       Employeid Varchar(38) Character Set Win1251,
       Departamentid Varchar(38) Character Set Win1251,
       Begdate Date,
       Result Smallint)

  • PEAKTOP © (11.04.09 10:25) [6]
    > Кевларвестов Семен   (10.04.09 22:15) [5]
    > Я так понял, что заголовок функции, с объявиловом того что
    > я ей передаю и что ожидаю получить?
    >
    > CREATE OR ALTER PROCEDURE SELECT_PERMISSION (
    >    Userid Varchar(38) = Null,
    >    Sessionid Varchar(38) = Null)
    > Returns (
    >    Permissionname Varchar(50))


    Чарсеты укажи по-нормальному - авось повезет :)


    CREATE OR ALTER PROCEDURE SELECT_PERMISSION (
      Userid Varchar(38) CHARACTER SET WIN1251 = Null,
      Sessionid Varchar(38) CHARACTER SET WIN1251 = Null
    )Returns (
      Permissionname Varchar(50) CHARACTER SET WIN1251
    )

  • не, так тоже не работает.
  • Кролик Иа-Иа2 (12.04.09 00:36) [8]

    > Что я делаю не так?

    Всё. Начиная с провайдера и кончая DB-Aware компонентами.
  • ну допустим. чего надо использовать.
  • Кролик Иа-Иа2 (12.04.09 02:23) [10]
    нада четать ибасе.ру, в прастанародеи - www.ibase.ru
  • имя (05.08.09 19:15) [11]
    Удалено модератором
 
Конференция "Базы" » Не удается выполнить хранимую процедуру Firebird. [D7, FireBird]
Есть новые Нет новых   [134473   +33][b:0][p:0.001]