PL/SQL中引号特殊用法

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 16:07 点击:
1.sql语句中是不区分大小写的,但引号中的的字符除外,包括单双引号.sql中单引号相当是其他语言中的双引号.
例如:select * from emp where ename = 'scott'没有结果,select * from emp where ename='SCOTT' 就有结果.
双引号用法就怪异一点.双引号和引号中的字符一起被当作一个标识符.比如我们create table table(ename varchar2(5),age int);
会有错,因为table是关键字.但我们用双引号把关键字引起来就可以用了.create table "table"(ename varchar2(5),age int);
select * from "table";
2.如果在引号中使用引号该咋整呢:(多加一个单引号做转义字符)
用法一:(用两个单引号,注意:可不是双引号喔)
declare
v_name varchar2(10);
v_num number(4);
begin
execute immediate 'select empno from emp where ename=''SCOTT'' ' into v_name;
execute immediate 'insert into emp(ename) values(''arwen'')';
end;
用法二:
select ' I''m arwen' from dual;
结果是:I'm arwen
用法三:(三个单引号,中间加||)
declare
v_name varchar2(10);
v_num number(4);
begin
v_name :='SCOTT';
execute immediate 'select empno from emp where ename='''||v_name||''' ' into v_name;
--execute immediate 'CREATE  SEQUENCE '||v_name||' START WITH 1 INCREMENT BY 1'; --直接引用变量
end;
当然这样引号太多了容易让人搞晕,所以还可以用另外的方式实现同样的功能.
declare
v_name varchar2(10);
v_num number(4);
begin
v_name :='SCOTT';
execute immediate 'select empno from emp where ename=:inputName ' into v_name
using v_name;
end;
 (补充:在pl sql块中不能直接用DDL,DCL语句)
比如
begin
drop table emp;
end;
就会出错.不过可以通过使用execute immediate使用DDL,DCL.
比如
begin
execute immediate'drop table emp';
end;
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Request.ServerVariables 参数大全
    • 执行全文索引时出现权限不足的解决方法
    • 导入excel文件处理流程节点的解决方案
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • MongoDB安装为Windows服务方法与注意事项
    • Percolator与分布式事务思考(二)
    • 写给MongoDB开发者的50条建议Tip1
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1