oracle 问题,SQL语句的问题,如下,我只不明白,为啥要加冒号“:”?我查了数据库,字字段都没有啊!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 问题,SQL语句的问题,如下,我只不明白,为啥要加冒号“:”?我查了数据库,字字段都没有啊!相关的知识,希望对你有一定的参考价值。

INSERT INTO ESS_ES_LOG
(USER_ID,DEVICE_SN, SERVICE_CODE, LOG_ID, OP_DATE, TRANS_CODE,
DEVICE_ID, RSTR, DEVICE_TYPE, RE_CODE)
VALUES
(:USER_ID,:DEVICE_SN, :SERVICE_CODE, :LOG_ID,
:OP_DATE, :TRANS_CODE, :DEVICE_ID, :RSTR, :DEVICE_TYPE, :RE_CODE)

冒号后面的都是变量!~
你这个SQL应该是存在于一个函数或者存数过程或者包里面的对吧?
如果你想执行这个SQL 必须把对应变量里的值也拿出来对应改一下!~追问

是在JAVA程序中看到和的啊!String sql="……";省略号就是上面的SQL.真的是变量?什么时候要这样写?

追答

对应你程序里的变量!~~~~~
你在这个String sql="……";代码上面 可以找到对应的变量 变量名就是去掉冒号的那个!~
我记得应该有个parameter.add这样累死的写法!~

参考技术A 有:的是变量,一般用在存储过程里或PL/SQL语句块里 参考技术B :代表之后是变量名吧 参考技术C 加冒号只是一个变量吧.没有具体的含义! 相当于&号, 你执行的时候是不是提示你要输入参数!

Oracle的SQL语句中的变量替换

一.问题描述

如下SQL:

INSERT INTO tmp(val)VALUES(\'a&b\');
View Code

执行过程中会出现如下提示:

点击"确定"过后我们查看表中的数据:

b后面的字符串没有插入进去.

二.原因解析--替代变量

SQL*PLUS中默认的"&"表示替代变量,当写入&时,数据库会要求其替换成其它的值。

如,你可以定义:

这样插入数据库中的值就是ahellob.

三.解决方法

解决方法1:关闭变量替换

如下所示:

SET DEFINE OFF;
INSERT INTO tmp(val)VALUES(\'a&b\');
COMMIT;
View Code

这样插入进去的值就是a&b

解决方法2:使用&符号的ASCII码CHR(38)来处理

字符串拼接,如下所示:

INSERT INTO tmp(val)VALUES(\'a\'||CHR(38)||\'b\');
COMMIT;
View Code

字符串翻译,如下所示:

INSERT INTO tmp(val)VALUES(translate(\'aIIIb\',\'III\',CHR(38)));
COMMIT;
View Code

字符串替换,如下所示:

INSERT INTO tmp(val)VALUES(REPLACE(\'aIIIb\',\'III\',CHR(38)));
COMMIT;
View Code

 

附:ASCII码对照表

百度百科:http://baike.baidu.com/view/15482.htm?fromid=99077

 

以上是关于oracle 问题,SQL语句的问题,如下,我只不明白,为啥要加冒号“:”?我查了数据库,字字段都没有啊!的主要内容,如果未能解决你的问题,请参考以下文章

Maximo/Oracle SQL 语句从连接表中返回不需要的数据

oracle 执行sql语句提示用户不存在

oracle中sql问的大写与小写会影响sql语句的效率吗?

SQL的存储过程 语法格式是啥?

Oracle查询语句导致CPU使用率过高问题处理

oracle数据库中如何用sql语句查出重复字段以及如何删除?