用动态SQL V_STR VARCHAR2(500);
BEGIN
V_STR:='select count(distinct('||AAA||')) from Table where '|| BBB ||'= 123';
EXECUTE IMMEDIATE V_STR INTO V_COUNT;
...
BEGIN
V_STR:='select count(distinct('||AAA||')) from Table where '|| BBB ||'= 123';
EXECUTE IMMEDIATE V_STR INTO V_COUNT;
...
v_sql :=
'select count(distinct('||参数1||')) into v_count from Table '||参数2;
Dbms_sql.parse(cursor_handle, v_sql, Dbms_sql.v7);
v_ret := Dbms_sql.EXECUTE(cursor_handle);
Dbms_sql.close_cursor(cursor_handle);
v_sql:='select count(distinct('||参数1||')) into v_count from Table '||参数2;
Dbms_sql.parse(cursor_handle, v_sql, Dbms_sql.v7);
DBMS_SQL.DEFINE_COLUMN(cursor_handle,1,v_row);
v_ret := DBMS_SQL.EXECUTE(cursor_handle);
v_ret := DBMS_SQL.FETCH_ROWS(cursor_handle);
DBMS_SQL.COLUMN_VALUE(cursor_handle,1,v_value);
out_value := v_row;
Dbms_sql.close_cursor(cursor_handle);
as
v_count number;
str varchar2(50);
begin
str:='select count(distinct('||p_filed||')) from Table '||p_where;
execute immediate str into v_count;
dbms_output.put_line(v_count);
end;
/
:=.(@%;
用dbms_sql包来执行
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_sql.htm#ARPLS058
之类不定条件的SQL语句,最好不要把关键词WHERE当作参数了,这里第一个参数没问题,第二个可以通过下面这样后加上去:
select count(distinct(AAA)) into v_count from Table where 1=1 ,如果还有条件就加上and BBB = 123 ,没有就算了。注意空格的保留。
execute immediate str into v_count;
到底是不是oracle 8.0.5的关系呢?
在oracle 8i下是否就可以?