什么时候会用到动态sql语句,大家能举个例子吗?

时间:2022-09-16 16:00:38
什么时候会用到动态sql呢,最近小弟在学,但是具体什么时候会用大家能举几个例子吗?

9 个解决方案

#1


比如说
select要从不同的表,表名是个变量的情况
或者
如in 变量之类的
在存储过程中,如果要用到创建表之类的DDL语句,也要用到动态SQL的

#3


另外一些情况
比如说你有些SQL的条件是有一张表的字段拼接而成的就需要用动态sql

#4


什么时候都可以用。
example:

DECLARE
  V_SQL VARCHAR2(1000);
BEGIN
  EXECUTE IMMEDIATE 'create table test(n number)';
  FOR I IN 1 .. 5 LOOP
    EXECUTE IMMEDIATE 'insert into test values(:1)'
      USING I;
  END LOOP;
  COMMIT;
END;
/

引用楼主 panweiwebweb 的帖子:
什么时候会用到动态sql呢,最近小弟在学,但是具体什么时候会用大家能举几个例子吗?

#5


引用 4 楼 oracledbalgtu 的回复:
什么时候都可以用。 
example: 

DECLARE 
  V_SQL VARCHAR2(1000); 
BEGIN 
  EXECUTE IMMEDIATE 'create table test(n number)'; 
  FOR I IN 1 .. 5 LOOP 
    EXECUTE IMMEDIATE 'insert into test values(:1)' 
      USING I; 
  END LOOP; 
  COMMIT; 
END; 


引用楼主 panweiwebweb 的帖子:
什么时候会用到动态sql呢,最近小弟在学,但是具体什么时候会用大家能举几个例子吗? 

嗯 ,是什么时候都可以用,动态SQL可以替代一切固定SQL
只不过动态sql写起来麻烦,容易出错
所以一般只是固定sql无法实现时才用动态sql

#6


其实还是不怎么理解

#7


1.DDL一定要用动态SQL来实现。
2.对于一个SQL语句的where条件,是要经过其他处理(比如:if...else...判断后的)要用动态SQL。
我补充两点。

#8


学习

#9


如果PL/SQL块中需要执行DDL语句(例如 CREATE,ALTER,DROP语句)、DCL语句(GRANT,REVOKE),或者
在PL/SQL块中需要执行更加灵活的SQL语句(例如在SELECT语句中使用不同的WHERE条件),那啊么就必须使用
动态SQL。

静态SQL和动态SQL的比较:
1. 静态SQL是在编写PL/SQL块时直接嵌入的SQL语句;而动态SQL实在运行PL/SQL块时动态输入的SQL语句。
2. 静态SQL性能要优于动态SQL,因此当编写PL/SQL块时,如果功能完全确定,则使用静态SQL;如果不能确定要执行的SQL,则用动态SQL

#1


比如说
select要从不同的表,表名是个变量的情况
或者
如in 变量之类的
在存储过程中,如果要用到创建表之类的DDL语句,也要用到动态SQL的

#2


#3


另外一些情况
比如说你有些SQL的条件是有一张表的字段拼接而成的就需要用动态sql

#4


什么时候都可以用。
example:

DECLARE
  V_SQL VARCHAR2(1000);
BEGIN
  EXECUTE IMMEDIATE 'create table test(n number)';
  FOR I IN 1 .. 5 LOOP
    EXECUTE IMMEDIATE 'insert into test values(:1)'
      USING I;
  END LOOP;
  COMMIT;
END;
/

引用楼主 panweiwebweb 的帖子:
什么时候会用到动态sql呢,最近小弟在学,但是具体什么时候会用大家能举几个例子吗?

#5


引用 4 楼 oracledbalgtu 的回复:
什么时候都可以用。 
example: 

DECLARE 
  V_SQL VARCHAR2(1000); 
BEGIN 
  EXECUTE IMMEDIATE 'create table test(n number)'; 
  FOR I IN 1 .. 5 LOOP 
    EXECUTE IMMEDIATE 'insert into test values(:1)' 
      USING I; 
  END LOOP; 
  COMMIT; 
END; 


引用楼主 panweiwebweb 的帖子:
什么时候会用到动态sql呢,最近小弟在学,但是具体什么时候会用大家能举几个例子吗? 

嗯 ,是什么时候都可以用,动态SQL可以替代一切固定SQL
只不过动态sql写起来麻烦,容易出错
所以一般只是固定sql无法实现时才用动态sql

#6


其实还是不怎么理解

#7


1.DDL一定要用动态SQL来实现。
2.对于一个SQL语句的where条件,是要经过其他处理(比如:if...else...判断后的)要用动态SQL。
我补充两点。

#8


学习

#9


如果PL/SQL块中需要执行DDL语句(例如 CREATE,ALTER,DROP语句)、DCL语句(GRANT,REVOKE),或者
在PL/SQL块中需要执行更加灵活的SQL语句(例如在SELECT语句中使用不同的WHERE条件),那啊么就必须使用
动态SQL。

静态SQL和动态SQL的比较:
1. 静态SQL是在编写PL/SQL块时直接嵌入的SQL语句;而动态SQL实在运行PL/SQL块时动态输入的SQL语句。
2. 静态SQL性能要优于动态SQL,因此当编写PL/SQL块时,如果功能完全确定,则使用静态SQL;如果不能确定要执行的SQL,则用动态SQL