分享

趣味竞答:用动态SQL执行DDL

 数据和云 2020-07-01

编辑手记:周四我们又见面啦!newkid说,世界上只有两种编程方法:Oracle的方法和错误的方法。他本人对SQL的研究极为深入,这种深入,让他真正掌握了SQL的乐趣,通过各种各样的尝试,给我们展现了一个妙趣横生的SQL世界。感谢newkid授权,今天我们来看一个跟动态SQL有关的例子。

下列语句执行之后屏幕上会显示什么?

CREATE TABLE plch_ids (id NUMBER)
/
BEGIN
   INSERT INTO plch_ids (id) VALUES (1);
   INSERT INTO plch_ids (id)  VALUES (2);
   ROLLBACK;
END;
/

DECLARE
   l_count   INTEGER;
BEGIN
   SELECT COUNT (*) INTO l_count FROM plch_ids;
   DBMS_OUTPUT.put_line (l_count);
END;
/


BEGIN
   INSERT INTO plch_ids (id) VALUES (3);
   INSERT INTO plch_ids (id) VALUES (4);

   EXECUTE IMMEDIATE 'ALTER TABLE plch_ids ADD emp_name VARCHAR2(10)';
   ROLLBACK;
END;
/

DECLARE
   l_count   INTEGER;
BEGIN
   SELECT COUNT (*) INTO l_count FROM plch_ids;
   DBMS_OUTPUT.put_line (l_count);
END;
/

(A) 2、2

(B) 2、0

(C) 0、0

(D) 0、2

知其然并要知其所以然,欢迎大家积极思考互动,或直接在大讲堂群参与讨论。

答案将在明日晨读公布

如何加入"云和恩墨大讲堂"微信群

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约