Параметр с табличным значением не найден в определенной схеме

#java #sql-server #database

#java #sql-сервер #База данных

Вопрос:

Я определил следующий параметр с табличным значением в своей БД:

 CREATE TYPE RVUSER.GXS_OTABTYP AS TABLE (
app_name VARCHAR(2000),
func VARCHAR(2000),
DESCRIPTION  VARCHAR(4000),
OWNER VARCHAR(30),
VERSION VARCHAR(30),
ISACTIVE VARCHAR(1),
FILENAME VARCHAR(4000),
FUNC_DESC  VARCHAR(4000),
READ_USERIDS VARCHAR(4000),
ADMIN_USERIDS VARCHAR(4000),
ISGLOBAL  VARCHAR(1),
LAST_UPDATEDBY VARCHAR(30),
ISAPPACTIVE VARCHAR(1)
)
  

При попытке вызвать хранимую процедуру, из JAVA которой в TVP качестве параметра используется указанное выше, я постоянно получал сообщение об ошибке: не удалось найти RVUSER.GXS_OTABTYP .

 cs = (SQLServerCallableStatement) connection.prepareCall("exec RVUSER.saveGxAppRec ?");
        cs.setStructured(1,"RVUSER.GXS_OTABTYP",sourceDataTable);
  

Копая глубже, я попытался выяснить все объекты внутри схемы RVUSER , используя:

 SELECT name AS function_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,type_desc  
  ,create_date  
  ,modify_date,*  
FROM sys.objects  
WHERE SCHEMA_NAME(schema_id) LIKE '%RVUSER%'; 
  

Я не смог найти то TVP RVUSER.OTABTYP , что я определил.

Итак, я проверил схему ‘sys’, и я смог увидеть TABLE_TYP объект с именем: TT_GXS_OTABTYP_160F4887 .

Я не могу понять, почему TVP создается в схеме sys, которая тоже с другим именем, а не в RVUSER схеме, которую я определил.

Нужна помощь для решения этой проблемы. Спасибо.

Комментарии:

1. Вы уверены, что в вашем CREATE заявлении в качестве цели использовалась правильная база данных?

2. ДА. Сначала я подумал, что это проблема, и снова запустил инструкцию create и получил это предупреждение: тип ‘RVUSER.GXS_OTABTYP’ уже существует, или у вас нет разрешения на его создание. Так что это не неправильная БД.

3. Что произойдет, если вы полностью укажете имя своего типа (добавьте server и db-name)?

4. Я запустил его на TOAD, используя правильный сервер и db-name.

5. Извините, не знаю. Надеюсь, что кто-то просветился…