powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / указать datatype переменной неявно (сослаться на тип столбцы таблицы)
11 сообщений из 11, страница 1 из 1
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740105
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
В Oracle при объявлении переменной можно не указывать тип явно, а сослаться на тип столбца таблицы:
Код: plsql
1.
some_var table_name.col_named%type


возможно ли подобное на DB2 при объявлении переменной через declare или описании параметров хп, функции?
Нашел нечто подобное только для пользовательских типов:
Код: plsql
1.
declare some_var ref(user_defined_type)


а для типов столбцов таблиц ну никак.
Спасибо.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740246
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalupator,

Добрый день.
Код: sql
1.
2.
3.
4.
5.
6.
7.
SET SERVEROUTPUT ON@

BEGIN 
  DECLARE v ANCHOR ROW syscat.schemata;
  SELECT * INTO v FROM syscat.schemata fetch first 1 row only;
  call dbms_output.put_line(v.schemaname);
END@
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740248
kospos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740300
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kospos, Mark Barinstein,

спасибо. anchor - то, что нужно!
жаль, что работает только при объявлении переменной. параметры функции или хп почему-то нельзя делать anchor.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740320
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalupator,

а вообще странно - написано, что могут быть и параметры anchor.

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

авторAnchored variables are supported in the following contexts:
SQL procedures
In SQL procedures, parameters and local variables can be specified to be of an anchored data type.
Compiled SQL functions
SQL functions created using the CREATE FUNCTION statement that specify the BEGIN clause instead of the BEGIN ATOMIC clause can include parameter or local variable specification that are of the anchored data type.

но у меня всегда в таком случае валится SQL0206N имя недопустимо в контексте, где оно используется.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740349
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalupatorжаль, что работает только при объявлении переменной. параметры функции или хп почему-то нельзя делать anchor.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TYPE R_SCHEMATA AS ROW ANCHOR ROW SYSCAT.SCHEMATA@

CREATE PROCEDURE SCHEMATA_GET_ROW (OUT P_ROW R_SCHEMATA)
BEGIN
  SELECT * INTO P_ROW FROM syscat.schemata fetch first 1 row only;
END@

BEGIN 
  DECLARE v R_SCHEMATA;
  CALL SCHEMATA_GET_ROW(v);
  call dbms_output.put_line(v.SCHEMANAME);
END@
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740356
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalupator,

Можно. Но для SQL ф-й/процедур. Для external нельзя, что, в общем-то, логично.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740422
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,

у меня sql

create or replace procedure update_fbls_table(
in fn_fld1 anchor fbls.fld1,
in fn_fld2 anchor fbls.fld2,
in fn_fld3 anchor fbls.fld3)
language sql
modifies sql data
begin
...
end;

SQL0206N fbls.fld1 недопустимо в контексте, где оно используется.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740459
kospos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalupator,

У тебя проблема в том, что fbls.fld1 не разрешается, укажи схему, где находится fbls в current schema и current path в сессии, в которой пытаешься процедуру задеплоить.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740467
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalupator,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE FUNCTION TABLE_TYPE (TABSCHEMA_ ANCHOR TO SYSCAT.TABLES.TABSCHEMA, TABNAME_ ANCHOR TO SYSCAT.TABLES.TABNAME)
  RETURNS ANCHOR TO SYSCAT.TABLES.TYPE
BEGIN
  DECLARE TABLE_TYPE ANCHOR TO SYSCAT.TABLES.TYPE;
  
  SET TABLE_TYPE = (SELECT TYPE 
    FROM SYSCAT.TABLES
    WHERE TABSCHEMA = TABSCHEMA_ 
      AND TABNAME   = TABNAME_
    FETCH FIRST 1 ROW ONLY);
  RETURN TABLE_TYPE;
END;



У вас оно не может разрешить имя колонки в текущем контексте. Или имя неправильное, или с текущей схемой (текущим path) что-то неправильно. Попробуйте указать полное имя, вместе со схемой.
...
Рейтинг: 0 / 0
указать datatype переменной неявно (сослаться на тип столбцы таблицы)
    #37740493
kalupator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kospos, CawaSPb,

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


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