Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / простой запрос с переменной / 10 сообщений из 10, страница 1 из 1
18.06.2012, 11:04
    #37842316
azzzzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
ДД, подскажите, как правильно написать запрос, типа такого:
Declare PDATE DATE;
SET PDATE = '2012-06-01';

SELECT *
FROM CCTL.RURALLDOCS DC
where trdate = PDATE;

Сейчас ошибка
*** SCRIPT START: Connection: sserver Jun-18-2012 11:03:08 ***

Declare PDATE DATE;
[IBM][CLI Driver][DB2/NT64] SQL0104N An unexpected token "DATE" was found following "Declare PDATE ". Expected tokens may include: "END-OF-STATEMENT". LINE NUMBER=1. SQLSTATE=42601

Statement processed with ERROR.

*** SCRIPT END : Connection: sserver Jun-18-2012 11:03:08 ***
...
Рейтинг: 0 / 0
18.06.2012, 15:03
    #37842782
Roman Pankov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
Можно через with:

Код: plsql
1.
2.
3.
4.
5.
6.
with
  A (PDATE) as (select date('2012-06-01') from SYSIBM.SYSDUMMY1)
select *
from A, CCTL.RURALLDOCS DC
where
  DC.TRDATE = A.PDATE;


Или хранимку. Зависит от целей.
...
Рейтинг: 0 / 0
18.06.2012, 15:08
    #37842790
A.Panskikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
azzzzz,

комната 1819 знает все ответы на вопросы.
...
Рейтинг: 0 / 0
18.06.2012, 16:02
    #37842892
knudsen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
azzzzz,
может процедурка нужна?

CREATE PROCEDURE "TEST" (IN "PDATEF" DATE )
SPECIFIC "TEST"
DYNAMIC RESULT SETS 1
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
READS SQL DATA
INHERIT SPECIAL REGISTERS

BEGIN
DECLARE CCV CURSOR WITH RETURN FOR SELECT ID,A,PDATEC FROM TEST WHERE PDATEC = PDATEF;
OPEN CCV;
END;
...
Рейтинг: 0 / 0
18.06.2012, 17:22
    #37843040
CawaSPb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
knudsen,

Не обязательно процедура. Достаточно любого (compiled или inlined) Compound SQL statement'а:
BEGIN
...
END;

Вообще, подобная ошибка в контексте, к примеру, хранимой процедуры, может возникать из-за неправильного порядка декларации (задекларировали до этого какой-нибудь курсор, к примеру).

2 azzzzz
В целом - мало информации - это в рамках процедуры какой? Из чего выполняется (код ошибки такой возвращается или от ADMIN_CMD, или от CLP, но это не CLP)?
И действительно, обращайтесь в 1819, будем рады помочь.
...
Рейтинг: 0 / 0
21.06.2012, 09:42
    #37847654
azzzzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
Roman PankovМожно через with:

Код: plsql
1.
2.
3.
4.
5.
6.
with
  A (PDATE) as (select date('2012-06-01') from SYSIBM.SYSDUMMY1)
select *
from A, CCTL.RURALLDOCS DC
where
  DC.TRDATE = A.PDATE;


Или хранимку. Зависит от целей.

Спасибо, это скорее то, что нужно.
Но хотелось бы еще проще - не определяя временной таблицы и процедуры, определить просто переменную и выполнить запрос.
Просто, например, в t-sql можно определять переменную в скрипте, хотелось бы что то подобное.
...
Рейтинг: 0 / 0
21.06.2012, 09:43
    #37847655
azzzzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
A.Panskikhazzzzz,

комната 1819 знает все ответы на вопросы.

Это прекрасно, но никто не мешает отвечать на вопросы здесь и по делу.
...
Рейтинг: 0 / 0
21.06.2012, 09:51
    #37847668
azzzzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
knudsenazzzzz,
может процедурка нужна?

CREATE PROCEDURE "TEST" (IN "PDATEF" DATE )
SPECIFIC "TEST"
DYNAMIC RESULT SETS 1
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
READS SQL DATA
INHERIT SPECIAL REGISTERS

BEGIN
DECLARE CCV CURSOR WITH RETURN FOR SELECT ID,A,PDATEC FROM TEST WHERE PDATEC = PDATEF;
OPEN CCV;
END;

ну а то же самое , только без процедуры?
...
Рейтинг: 0 / 0
21.06.2012, 12:08
    #37848129
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
azzzzzну а то же самое , только без процедуры?
Compound statements
Compiled compound statement
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set serveroutput on@

begin
  declare p_schema varchar(128);
  set p_schema='SYSCAT';

  for c as 
  select tabname from syscat.tables where tabschema=p_schema
  do
     call dbms_output.put_line(c.tabname);
  end for;
end@

Если хотите использовать более красивое форматирование результатов, можете посмотреть DBMS_SQL модуль и его процедуры .

Ещё есть альтернативный интерпретатор CLPPlus .
...
Рейтинг: 0 / 0
21.06.2012, 12:23
    #37848175
A.Panskikh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простой запрос с переменной
azzzzzA.Panskikhazzzzz,

комната 1819 знает все ответы на вопросы.

Это прекрасно, но никто не мешает отвечать на вопросы здесь и по делу.

По делу - RTFM. Иначе придется отвечать на вопросы (из серии на какую педаль нажать чтоб поехало) словами "в начале был хаос...". Никто здесь не будет читать вслух документацию.

http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.container.doc%2Fdoc%2Ft0024244.html

Внутри подробно описаны инструменты доступа к БД, входящие в поставку DB2 - clp И clpplus, плюс sqllib\samples.

Есть гугл, который сразу даст полезные ссылки для тех, кто хочет перейти с MSSQL на DB2 (and vice versa)

http://www.redbooks.ibm.com/redbooks/pdfs/sg246672.pdf
http://download.microsoft.com/download/C/0/C/C0C8C15A-32AD-418E-85BF-A6FF0CCE052C/MigrateDB2toSQLServer_2009.pdf

AP
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / простой запрос с переменной / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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