Sql 在过程的参数中调用表名并输出该表中的每个列名

Sql 在过程的参数中调用表名并输出该表中的每个列名,sql,oracle,stored-procedures,plsql,Sql,Oracle,Stored Procedures,Plsql,抱歉,如果这不是一个好问题,我觉得应该很简单,但我没有得到我想要的结果:( 我创建了一个存储过程,用于打印出USER\u TABLES中的所有表名。现在我要做的是在第一个过程中调用另一个过程,以输出表中的所有列 我所拥有的: create or replace PROCEDURE ColumnNames( newColumn.Table_Name IN varchar2 ) AS CURSOR newColumn IS SELECT COLUMN_NAME FROM USE

抱歉,如果这不是一个好问题,我觉得应该很简单,但我没有得到我想要的结果:(

我创建了一个存储过程,用于打印出
USER\u TABLES
中的所有表名。现在我要做的是在第一个过程中调用另一个过程,以输出表中的所有列

我所拥有的:

create or replace PROCEDURE ColumnNames(

newColumn.Table_Name IN varchar2
)
AS
  CURSOR newColumn IS
    SELECT COLUMN_NAME
    FROM USER_TABLES;
  CurrentRow newColumn%ROWTYPE;
BEGIN
    FOR CurrentRow IN newColumn LOOP
    DBMS_OUTPUT.PUT_LINE(CurrentRow.Column_Name);
  END LOOP;
END;
/
编辑以添加错误消息:

错误(3,10):PLS-00103:在预期以下情况时遇到符号“.”:
输入输出…长双参考字符时间戳间隔日期二进制


感谢您的帮助!

使用
用户选项卡列
而不是
用户表
。 变量
newColumn.Table_Name
在代码中不起任何作用,且名称不正确(包含点符号) 在当前情况下,游标和变量声明也过多。 如果需要打印特定表的所有列名,可以使用

create or replace procedure print_columns(tab_name in varchar2) is
begin
    for col in (select column_name from user_tab_columns where table_name = tab_name) loop
        dbms_output.put_line(col.column_name);
    end loop;
end;
/

问题出在哪里?您能添加完整的代码并发布您的具体内容吗?
user\u tables
是表的视图,它不包含列。对列使用
user\u tab\u columns
这是我的完整代码。只是尝试创建一个新过程来输出列名-表和列已经创建。我添加了我的问题出错。
varchar2
中的newColumn.Table\u Name不是声明PL/SQL参数的有效语法。只需给它一个正确的名称,如
p\u Table\u Name
。尽管由于您的过程实际上没有使用该参数,您应该删除整个声明。