如何执行以下Oracle / pl-sql代码并排显示两列?
SELECT table_name, user_cons_columns.column_name
FROM user_cons_columns;
设置长1000
设置lineize 200
如果long和linesize已从20更改为2000,则失败。我怀疑它只是不正确的SQL代码......但不确定。提前谢谢!
答案 0 :(得分:4)
这与SQL代码无关(你不应该改变它,例如通过截断SQL查询中的字符串,只是为了修复格式问题)。
问题是表中的列被声明为某个宽度,比如VARCHAR2(1000),然后是SQL Plus默认保留的内容。您可以使用SQL Plus命令在SQL Plus中更改它。在这种情况下,COLUMN命令。
SQL> column column_name format a30
SQL> column table_name format a30
这些是SQL Plus命令,所以不要以分号结尾(;)
如果您希望每列40个字符,请将a30更改为a40。等
目前尚不清楚为什么,如果在输出中你希望表名首先出现,那么在查询中你首先要有列名。你应该能够自己解决这个问题。此外,如果您只从一个表中进行选择,则无需使用表名为列名添加前缀。但是,如果这样做,请保持一致 - 对两列都这样做。如果这样做,最好在FROM子句中为表提供别名,并在SELECT中使用别名。这些都与您原来的问题无关。
答案 1 :(得分:-1)
仅从column_name字段中选择前N(20)个字符。
SELECT SUBSTR(column_name, 1, 20) column_name, table_name
FROM user_cons_columns;