在程序块中使用ddl语句
ddl语句不能直接放在程序块中使用
要想使用,需要动态sql
动态sql
是将sql语句用单引号包裹,交给变量
语法
DECLARE
变量名 VARCHAR2(300); ---1.声明变量
BEGIN
变量名 := 'SQL语句' ---2.给变量赋值,定义动态sql
---注意 sql语句要是一个能执行的正常sql语句交给变量
EXECUTE IMMEDIATE 变量名 ---3.立即执行动态sql
[INTO 变量2 ...] ---将执行的结果交给变量
ENd;
实现ddl语句
DECLARE
V_sql VARCHAR2(300);
BEGIN
V_sql :='DROP TABLE HAHA'
EXECUTE IMMEDIATE V_sql;
ENG;
输入一个表名,显示有多少数据
DECLARE
V_sql VARCHAR2(200);
V_table VARCHAR2(20) :='&请输入';
V_count NUMBER;
BEGIN
V_SQL:='SELECT COUNT(1) FROM ' ||V_table;
EXECUTE IMMEDIATE V_SQL INTO V_COUNT;
dbms_output.put_line(V_count);
END;