我有一个程序,她把一个表作为参数,我必须写入一个sql文件,从该表中的所有细节,如列名,类型和约束。这是我试过的(这是一个测试代码,只是为了找出如何打印所有信息):
v_cursor_id := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_cursor_id , 'SELECT * FROM marks', DBMS_SQL.NATIVE);
v_ok := DBMS_SQL.EXECUTE(v_cursor_id );
DBMS_SQL.DESCRIBE_COLUMNS(v_cursor_id, v_total_coloane, v_rec_tab);
v_nr_col := v_rec_tab.first;
IF (v_nr_col IS NOT NULL) THEN
LOOP
DBMS_OUTPUT.PUT(v_rec_tab(v_nr_col).col_name);
DBMS_OUTPUT.PUT(' ');
v_tipColoana :=(v_rec_tab(v_nr_col).col_type);
case v_tipColoana
when 1 then DBMS_OUTPUT.PUT('varchar2');
when 2 then DBMS_OUTPUT.PUT('Number');
when 12 then DBMS_OUTPUT.PUT('date');
when 96 then DBMS_OUTPUT.PUT('CHAR');
end case;
EXIT WHEN (v_nr_col IS NULL);
END LOOP;
END IF;
DBMS_SQL.CLOSE_CURSOR(v_cursor_id);
答案 0 :(得分:0)
您只需查看Oracle Metadata表TABLE_NAME
即可。
详情请见:
https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_1037.htm#i1576022
您应该能够按ALL_SOURCE
进行过滤,以查看表格的所有约束,包括其类型。
我不确定您要将哪些内容放入SQL文件中,但如果您需要获取每个约束的DDL,请查看dbms_metadata.get_ddl()
或 @Override
public int getItemPosition(Object object) {
super.getItemPosition(object);
SharedPreferences pos = ctx.getSharedPreferences("forposition", MODE_PRIVATE);
int tom = pos.getInt("pos",0);
Log.d("posTom","value : "+tom );
return tom;
}
。