Страница 1 из 1

Опять проблема с EXECUTE STATEMENT в ХП

Добавлено: 16 май 2007, 08:42
stepan96
Здравствуйте!

Опять возникла проблема при написании ХП с EXECUTE STATEMENT. Дело вот в чем: в интерефейсе необходимо на грид выводить только заданное количество записей (указывается в TEdit), при чем необходимо выдать пользователю сообщение об общем количестве страниц. Ну чтото типа вроде "Показана 5 страница из 63". Т.к. все таблицы, для которых это необходимо разработаны по единым принципам решил все запихнуть в ХП:

Код: Выделить всё

CREATE PROCEDURE COUNT_PAGES(
  TABLE_NAME VARCHAR(255) CHARACTER SET NONE,
  RECORDS_PER_PAGE BIGINT,
  WHERE_STR VARCHAR(1024) CHARACTER SET NONE)
RETURNS(
  RESULT BIGINT)
AS
DECLARE VARIABLE CC BIGINT;
DECLARE VARIABLE Q VARCHAR(1024) CHARACTER SET NONE;
BEGIN
  CC = 0;
  IF (TRIM(WHERE_STR) = '') THEN
    WHERE_STR = '1 = 1';
  Q = 'SELECT COUNT(ID) FROM ' || TABLE_NAME || ' WHERE ' || WHERE_STR;
  EXECUTE STATEMENT Q INTO :СС;
  
  RESULT = DIV(CC, RECORDS_PER_PAGE);
  IF (MOD(CC, RECORDS_PER_PAGE) <> 0) THEN
    RESULT = RESULT + 1;
END
При ее запуске возникает ошибка: Unsuccessfull execution caused by an unavailable resource. Variable type (position 0) in EXECUTE STATEMENT 'SELECT COUNT(ID) FROM GROUPS WHERE 1= 1' does not match returned column
В чем проблема - понять не могу. Помогите пожалуйста.

Добавлено: 16 май 2007, 10:34
WildSery
Очень плохо, что "решил засунуть".
Эта процедура легко выполняется одним запросом, чего и советую.
Да ещё и вчитываться не хочешь, судя по всему. Тебе ясно в ошибке сказали - несоответствие типа параметра.
Плюс, мания величия. Два млрд. страниц тебе мало.

Добавлено: 16 май 2007, 18:00
kdv
поддерживаю. кстати, character set none тоже подозрителен.