zoukankan      html  css  js  c++  java
  • sql中引号的特殊用法(转自红黑联盟)

    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;

  • 相关阅读:
    值类型、引用类型作为方法参数如何执行,ref与out的区别
    asp.net 常用 验证正则表达式
    ASP.NET的错误处理机制
    MSSQL与MYSQL区别
    http协议状态码对照表
    EF 跨数据库支持
    请求管道中的19个事件
    一位软件工程师的6年总结本人读了深受启发,献给所有从事IT开发的人 [转载]
    Windows 窗体的.Net 框架绘图技术
    Windows Live Messenger 8.5 去广告方法及资源文件
  • 原文地址:https://www.cnblogs.com/zigewb/p/3088878.html
Copyright © 2011-2022 走看看