2015-10-27 39 views
-1

我試圖從表'TABLE1'中計算特定列即col1的數量。查詢沒有像預期的那樣回調價值

下面是我打

select count(col1) into col_data 
from (SELECT TABLE_NAME from USER_TABLES where TABLE_NAME = 'table1'); 

而且下面的錯誤我得到

Error starting at line 1 in command: 
select count(COL1) from (SELECT TABLE_NAME from USER_TABLES where TABLE_NAME = 'TABLE1') 
Error at Command Line:1 Column:13 
Error report: 
SQL Error: ORA-00904: "COL1": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 

注意查詢:請讓我知道如何從子句中使用一個變量

+1

你的子查詢只返回TABLE_NAME列,但你試圖選擇col1。 – jarlh

+0

@jarlh感謝您的回覆,但實際問題是我試圖從TABLE1中獲取'COL1'的計數,但是from子句不允許我使用變量。這就是我在from子句中使用子查詢的原因。 請讓我知道如果你有更好的辦法做到這一點 – anurag

+0

@anurag如果你想從某個表中獲取所有列名並對它們進行計數,你應該使用USER_TAB_COLUMNS。那是你想要做的嗎?我不確定我是否理解你的問題 – pablomatico

回答

1

如果要計算表TABLE1列col1中值的數量,則應寫入

select count(col1) from TABLE1 ; 

如果你想使它通用,這樣就可以做到這一點計數的任何表和列,並希望提供在運行時的細節,你可以使用下面的

create or replace function get_count(table_name varchar2 , column_name varchar2) 
return number 
is 
cnt number ; 
begin 
execute immediate 'select count('||column_name||') from '||table_name into  cnt ; 
return cnt; 
exception when others then 
return 0; 
end get_count; 

一旦ü創建此功能在你的模式中,你可以做類似

select get_count('EMP' , 'EMP_ID') from dual ; 
+0

感謝bud,我正在尋找像這樣的,它工作。 – anurag

相關問題