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
tabletable
⽤法三:(三个单引号,中间加||)
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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。