Sql 如何获取oracle表中的第一列?
我需要为select查询获取oracle表中的第一列Sql 如何获取oracle表中的第一列?,sql,oracle,Sql,Oracle,我需要为select查询获取oracle表中的第一列 i、 e.从表中选择第一列。我该怎么做?我没有访问SYS表的权限,即无法访问像user_tab_列这样的表。可以这样做吗?听起来您的访问权限非常有限。如果您的帐户可以访问DBMS_SQL,您可以尝试以下操作: declare lv_stat VARCHAR2(300) := 'SELECT * FROM tablename'; lv_cid integer; lv_tab DBMS_SQL.DESC_TAB; lv_cnt int; begi
i、 e.从表中选择第一列。我该怎么做?我没有访问SYS表的权限,即无法访问像user_tab_列这样的表。可以这样做吗?听起来您的访问权限非常有限。如果您的帐户可以访问DBMS_SQL,您可以尝试以下操作:
declare
lv_stat VARCHAR2(300) := 'SELECT * FROM tablename';
lv_cid integer;
lv_tab DBMS_SQL.DESC_TAB;
lv_cnt int;
begin
lv_cid := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(lv_cid,lv_stat,DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS(lv_cid,lv_cnt,lv_tab);
DBMS_OUTPUT.PUT_LINE('First Column is '||lv_tab(1).col_name);
DBMS_SQL.CLOSE_CURSOR(lv_cid);
EXCEPTION
when others then
DBMS_SQL.CLOSE_CURSOR(lv_cid);
end;
这可以封装到PL/SQL函数中。与DBA交谈可能更简单您始终可以访问用户选项卡列
如果DBA试图撤销太多的内容,那么这些内容就会中断。您在什么环境下试图实现这一点?直接SQ、PL/SQL或3GL?我不知道您想在这里归档什么。如果您使用的是sql工具,只需执行“select*from table”,然后选择您喜欢的一个。此外,您永远不应该依赖于列的“顺序”。。。它可能会随着时间的推移而改变。唯一好的方法是根据列的名称请求列。这里真正的解决方案是通过与DBA对话来访问数据字典视图。如果他们让你的生活变得困难,那么他们没有正确地完成他们的工作。有没有充分的理由不提供对这些视图的访问?就像关系数据库中的行没有固有的顺序一样,列也没有顺序。如果您的应用程序逻辑需要了解什么是“第一”列,那么您应该重新思考您的设计!