powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Передача даты как параметра в хранимую процедуру
15 сообщений из 40, страница 2 из 2
Передача даты как параметра в хранимую процедуру
    #39140698
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
with dm.DSet do
begin
   Active:=False;
   SelectSQL.Text:='SELECT * FROM GET_VALUES(:PField1Integer_id, :PField2Date)';
   Prepare;
   Params.ParamByName('PField1Integer_id').AsInteger:=1;
   Params.ParamByName('PField2Date').AsDate:=DateTimePicker1.Date;
   Active:=True;
end;


Повторяю ещё раз, медленно: это правильный код и должен работать. Ты в состоянии показать
заголовок объявления процедуры и скопипастить ошибку, которую этот код (а не
отбалдовые вариации) выдаёт?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39140707
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovэто правильный код
Точнее сказать, всё-таки "валидный и работоспособный". За повторное использование
туалетной бумаги переменных надо бы по голове стучать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39140957
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

CREATE OR ALTER PROCEDURE GET_VALUES (
PField2Date date not null,
PField1Integer_id integer not null)
returns ( ...

Ошибка:

dm.DSet.SelectQuery:
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
Conversion error from string "31-DEC-2015".
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39140960
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites
Код: sql
1.
2.
3.
4.
CREATE OR ALTER PROCEDURE GET_VALUES (
    PField2Date date not null,
    PField1Integer_id integer not null)
returns ( ...




Несколько ранее

offsites
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  
  with dm.DSet do
  begin
    Active:=False;
--->>>>  SelectSQL.Text:='SELECT * FROM GET_VALUES(:PField1Integer_id, :PField2Date)';
    Prepare;
    Params.ParamByName('PField1Integer_id').AsInteger:=1;
    Params.ParamByName('PField2Date').AsDate:=DateTimePicker1.Date;
    Active:=True;
  end;




Порядок параметров в процедуре то data, integer, то потом integer, data

P.S.
Никогда не пользуйся кнопкой src в редакторе.
Нехай сообщество глаза ломает глядя на неотфомартированный текст.
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141024
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Граур Станислав,

Да, дело было в порядке, спасибо, все работает!
И предположить не мог что имена переменных играют второстепенную роль.
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141027
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя да, подумав понял что ступил сильно. Так ведь во всех процедурах и функциях, порядок нужен ))
Чет рассматривал ХП в отрыве от этого (спешка ))) ), решил что нужно просто свалить все переменные туда, а он сам разберется )
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141056
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites,
не припомню ЯП, где можно было бы сваливать параметры как попало. Даже в интерпретируемых ЯП оно как соответствие именам параметров должно определять? А уж в компилируемых ЯП (и psql FB) тем более, никак, там просто четкая последовательность.
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141083
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites,

В SQL вообще нет имен переменных, все параметры меняются на знак вопроса

http://datasql.ru/proektbd/5.htm
https://msdn.microsoft.com/ru-ru/library/ms140355.aspx

Как в общем и почти во всех языках, кроме некоторых скриптовых типа VBA

PS. в FIB+ разве не показывается чистый код SQL-запроса, безз Дельфийский заморочек? В UIB есть свойство ParsedSQL
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141084
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

VBA - именованые параметры, можно вообще указать только один из десяти
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141088
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvоно как соответствие именам параметров должно определять?

а ровно так же как в SQL

вот смотри сам

INSERT xxxxx VALUES (1,2,3,4,5)

или

INSERT xxxxx SELECT 1,2,3,4,5 FROM rdb$database

вот тебе позиционные безымянные параметры

а теперь

UPDATE xxx SET name1=value1, name2=value2, name3=value3

Вот тебе беспозиционные именованные
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141091
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВот тебе беспозиционные именованные
это тебе так кажется. Т.е. если взять просто запрос (не в процедуре или триггере)
Код: sql
1.
UPDATE xxx SET name1=:param1, name2=:param2, name3=:param3


то они как раз исключительно позиционные. А по именам их разбирают (если могут) компоненты или драйверы.

p.s. и вообще я говорил про параметры процедур, о чем упоминал автор топика.
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141413
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, амбисните темному, вот написано, DS пишет, что оно правильно:

Params.ParamByName('PField1Integer_id').AsInteger:=1;
Params.ParamByName('PField2Date').AsDate:=DateTimePicker1.Date;

моя всю жисть писал так:

ParamByName('PField1Integer_id').AsInteger:=1;
ParamByName('PField2Date').AsDate:=DateTimePicker1.Date;

И у меня оно таки работало.
Я пропустил чего-то интересное?
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141449
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyИ у меня оно таки работало.
Я пропустил чего-то интересное?
Какая разница? Кому как удобней, тот так и пишет. Не бери в голову! ;)

Мне, к примеру, нравится так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
  static const char sql__treeSelectChildren[] = "\
SELECT \"id\", \"name\"\r\n\
  FROM \"tree\"\r\n\
  WHERE \"node_id\" = :\"node_id\"";

  struct INITIALIZER
  {
    TFIBXSQLVAR * NodeId;
    TFIBXSQLVAR * Id;
    TFIBXSQLVAR * Name;

    __INLINE
    __fastcall INITIALIZER(void)
    {
      std::memset(this, 0, sizeof(INITIALIZER));
    }
    
  };

  INITIALIZER src;
  Fibquery::TFIBQuery * qry;
  try
  {
    qry = Pfibcachequeries::GetQueryForUse(tran, sql__treeSelectChildren);
    if (!qry->Prepared)
    {
      qry->Options << qoNoForceIsNull;
      qry->GoToFirstRecordOnExecute = true;
      qry->Prepare();
    }
    src.NodeId = qry->ParamByName("node_id");
    src.Id     = qry->FieldByName("id");
    src.Name   = qry->FieldByName("name");
    src.NodeId->Value = ((TREE::FIELDS&)node).id;
    qry->ExecQuery();
    if (qry->AllRowsAffected.Selects)
    {
      .
      .
      .
    }



И никто меня не убедит в том, что использовать 3-й диалект с названиями объектов БД в нижнем регистре и в двойных кавычках - это плохо.
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141450
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyDS пишет, что оно правильно
Во-первых, я не заметил Params.
Во-вторых, позже я поправился на "валидный и работоспособный".
В-третьих, некоторые наборы компонент действительно имеют ParamByName только в Params.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передача даты как параметра в хранимую процедуру
    #39141480
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А некоторые имеют и то и другое. Плюс еще к примеру вот такое:

ParamValues['my_param']:=12345;
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Передача даты как параметра в хранимую процедуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]