我已经运行了这个查询:
array(3) {
[0] =>
string(16) "A Chatbot record"
[1] =>
string(19) "Hello, how are you?"
[2] =>
string(8) "I'm Fine"
}
但是它会在SELECT
OWNER,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
(CASE
WHEN DATA_PRECISION IS NULL THEN 0
ELSE DATA_PRECISION
END) DATA_PRECISION,
(CASE
WHEN DATA_SCALE IS NULL THEN 0
ELSE DATA_SCALE
END) DATA_SCALE,
NULLABLE,
COLUMN_ID
DEFAULT_LENGTH,
DATA_DEFAULT,
(CASE
WHEN DATA_DEFAULT IS NULL THEN '0'
ELSE DATA_DEFAULT
END) DATA_DEFAULT1
FROM
all_tab_columns
WHERE
table_name LIKE 'TABLE1';
列引发错误:
ORA-00932:数据类型不一致:预期CHAR得到LONG
00932. 00000 - “不一致的数据类型:预期%s获得%s”
我该如何解决?
谢谢!
答案 0 :(得分:3)
您无法对LONG
执行任何操作。它是PITA,Oracle仍在数据字典中使用它们。
您可以使用XML:
select owner
, table_name
, column_name
, data_type
, data_length
, case
when data_precision is null then 0
else data_precision
end data_precision
, case
when data_scale is null then 0
else data_scale
end data_scale
, nullable
, column_id
, default_length
, case
when default_length is null then '0'
else
extractvalue
( dbms_xmlgen.getxmltype
( 'select data_default from user_tab_columns where table_name = ''' || c.table_name || ''' and column_name = ''' || c.column_name || '''' )
, '//text()' )
end as data_default
from all_tab_columns c
where table_name like 'TABLE1';
答案 1 :(得分:1)
以下是一些如何打印LONG的代码。您可以根据需要进行更改。
set serveroutput on
declare
cursor c1 is
select
OWNER
,TABLE_NAME
,COLUMN_NAME
,DATA_TYPE
,DATA_LENGTH
,(CASE WHEN DATA_PRECISION IS NULL THEN 0 ELSE DATA_PRECISION END) DATA_PRECISION
,(CASE WHEN DATA_SCALE IS NULL THEN 0 ELSE DATA_SCALE END) DATA_SCALE
,NULLABLE
,COLUMN_ID
,DEFAULT_LENGTH
,DATA_DEFAULT
from all_Tab_columns where table_name='ENTITIES' and default_length is not null;
v_long long;
v_varchar2 varchar2(4000);
begin
for loop1 in c1
loop
v_long := loop1.DATA_DEFAULT;
v_varchar2 := substr(v_long,1,4000);
dbms_output.put_line(v_varchar2);
end loop;
end;