通过DBMS_SQL

时间:2016-09-13 05:15:12

标签: oracle dynamic-sql

我试图通过dbms_Sql包检索员工的名字,姓氏和工资。以下代码已成功执行,但未打印任何详细信息。
例外输出:
阿图尔王15000
................
jimmy fallon 16000
当前输出:
PL / SQL过程已成功完成。

declare
SH integer ;
output binary_integer;
--
Salary number(10) := 10000;
l_firstname varchar2(50);
l_lastname varchar2(50);
l_salary    number(10);
begin
--
SH := dbms_Sql.open_cursor;
dbms_sql.parse(SH,'select first_name,last_name,salary from employees
where salary > :salary_value',DBMS_SQL.NATIVE);

dbms_sql.bind_variable(SH,':salary_value',salary);

dbms_Sql.define_column(SH,1,l_firstname, 30);
dbms_sql.define_column(sh,2,l_lastname, 30);
dbms_sql.define_Column(sh,3,l_salary);

output := dbms_Sql.execute(SH);

<<dbms_Sql_loop>>
loop

exit when dbms_sql.fetch_Rows(SH) = 0;

/* 
||Retrieve data
||
*/
dbms_output.put_line(l_firstname ||'  '||l_lastname||'  ' || l_salary);

dbms_Sql.define_column(SH,1,l_firstname, 30);
dbms_sql.define_column(sh,2,l_lastname, 30);
dbms_sql.define_Column(sh,3,l_salary);

end loop dbms_Sql_loop;

dbms_Sql.close_cursor(SH);
end;
/

1 个答案:

答案 0 :(得分:0)

我使用的是dbms_Sql.define_colum而不是dbms_Sql.column_value。 替换它现在工作正常。