PL/SQL 你能帮我理解这个 PL/SQL 代码吗?
PL/SQL can you help me understand this PL/SQL code?
我在 PL/SQL 中有关于 DBMS_SQL 用法的代码;当我分配字符串 sqlString 时,":sal" 做了什么?
DECLARE
sqlString VARCHAR2(100);
c INTEGER;
rows_processed INTEGER;
max_salary INTEGER;
BEGIN
max_salary := 10000;
sqlString := 'DELETE FROM employees WHERE salary > :sal';
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, sqlString, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, ':sal', max_salary);
rows_processed := DBMS_SQL.EXECUTE(c);
DBMS_OUTPUT.PUT_LINE('Impiegati cancellati: ' || rows_processed);
DBMS_SQL.CLOSE_CURSOR(c);
END;
这里解释得很好:
http://www.dba-oracle.com/t_plsql_dbms_sql_bind_variable.htm
它只是将“max_salary”的值赋给 sal 变量。这用于动态 SQL 过程。
代码正在执行此查询 (sal = max_salary = 10000):
DELETE FROM employees WHERE salary > 10000
最后显示删除了多少条记录。
我在 PL/SQL 中有关于 DBMS_SQL 用法的代码;当我分配字符串 sqlString 时,":sal" 做了什么?
DECLARE
sqlString VARCHAR2(100);
c INTEGER;
rows_processed INTEGER;
max_salary INTEGER;
BEGIN
max_salary := 10000;
sqlString := 'DELETE FROM employees WHERE salary > :sal';
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, sqlString, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, ':sal', max_salary);
rows_processed := DBMS_SQL.EXECUTE(c);
DBMS_OUTPUT.PUT_LINE('Impiegati cancellati: ' || rows_processed);
DBMS_SQL.CLOSE_CURSOR(c);
END;
这里解释得很好:
http://www.dba-oracle.com/t_plsql_dbms_sql_bind_variable.htm
它只是将“max_salary”的值赋给 sal 变量。这用于动态 SQL 过程。
代码正在执行此查询 (sal = max_salary = 10000):
DELETE FROM employees WHERE salary > 10000
最后显示删除了多少条记录。