动态SQL

动态SQL

动态sql:在编写时无法完整写得,只能在程序执行时构造的临时sql

宿主变量:一个宿主指针变量指向一块内存空间,其中存有用户输入的sql语句

语法1:IMMEDIATE:要求sSQL非select语句,并且无输入的宿主变量
	EXEC SQL execute immediate "sql的内容";
	或者 EXEC SQL execute immediate:sSQL;
	---例子:EXEC SQL EXECUTE IMMEDIATE "CREATE TABLE tbname (col1 varchar2(4))";
---------------------------------------------------------------------------------
语法2:PREPARE:要求sSQL非select语句,并且输入的变量数目、类型已知
	strcpy(sSQL,"delete from emp where empno=");
	EXEC SQL prepare s from:sSQL;       --准备SQL
	EXEC SQL execute s using :v1, :v2;  --执行sql
	---例子:scanf("%s",loc);scanf("%s",deptno);
     EXEC SQL prepare my_pre_sql FROM 'update dept set loc = :a where deptno = :b';
     EXEC SQL execute my_pre_sql using :loc, :deptno;
--------------------------------------------------------------------------------
语法3declare:要求sSQL为select语句,且要求变量个数固定
	EXEC SQL prepare s from:sSQL;       --准备SQL
	EXEC SQL declare c cursor for s;    --定义游标
	EXEC SQL open c using :v1,:v2;      --启用游标
	EXEC SQL fetch c into :v1,:v2;      --获取数据
	EXEC SQL close c;                   --关闭游标
	---例子:
	exec sql prepare s from 'select deptno,dname,loc from dept where deptno>:a';
	exec sql declare c cursor for s;
	exec sql open c using :deptno;
	exec sql fetch c into :deptno, :dname, :loc;
	exec sql close c;
-------------------------------------------------------------------------------
语法4sql(用到了再说)
EXEC SQL COMMIT
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值