oracle数据库,查询到的结果怎样修改??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库,查询到的结果怎样修改??相关的知识,希望对你有一定的参考价值。

如,查询到的结果为(1, a, 张三)改为(1, a, 张三的成绩 )

查询到的结果可用for update来修改。

如:

select * from emp;

查询到以下数据:

此时语句可改写:

select * from emp for update;

然后点击如图图标:

此时可以修改表中内容,如将empno为8888的改成4444。按图中所示进行操作即可。

参考技术A

在把Oracle查询结果转换为SQL Server的时候要特别当心一些不容易注意到的问题。

我们知道,T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是PLSQL.这两种查询语言都对

ANSI SQL-92标准进行了扩展以提供额外的支持力度。你所创建的应用程序几乎都要用到这些补充特性。本文就对最常用的、非标准的Oracle扩展进行了说明,同时还要介绍下如何

对这些扩展进行转化以用在SQL Server环境下。

列的选择

用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL Server的要求是一样的。 SELECT语句必须选择针对的数据表。在Oracle数据库内有一种特殊的表DUAL.DUAL表由

Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2

(1)类型,有一行值X.

从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。

Oracle下的DUAL查询如下所示:

SELECT

‘x’ FROM dual

而对等的SQL Server查询则是下面这个样子:

SELECT ‘x’

连接

Oracle用|| 符号作为连接符,而SQL Server的连接符是加号:+ .

Oracle查询如下所示:

Select ‘Name’ || ‘Last Name’

From tableName

对应的SQL Server查询如下所示:

Select ‘Name’ + ‘Last Name’

数字取舍

Oracle数据库内有一个TRUNC函数,该函数返回m位十进制数的n位;如果省略m则n就是0位。m的值可以为负,表示截去小数点左边m位数字。

在SQL Server下可以用Round或者Floor.

以下是Oracle查询:

SELECT

TRUNC(15.79,1) "Truncate" FROM DUAL;

下面是同类查询的SQL Server版本:

SELECT ROUND(15.79, 0) rounded ,

ROUND(15.79, 0,1) truncated

SELECT FLOOR(ROUND(15.79, 0)),

FLOOR(ROUND(15.79, 0,1) )

在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题。我们知道,T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是PLSQL.这两种查询语言都对

ANSI SQL-92标准进行了扩展以提供额外的支持力度。你所创建的应用程序几乎都要用到这些补充特性。本文就对最常用的、非标准的Oracle扩展进行了说明,同时还要介绍下如何

对这些扩展进行转化以用在SQL Server环境下。

列的选择

用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL Server的要求是一样的。 SELECT语句必须选择针对的数据表。在Oracle数据库内有一种特殊的表DUAL.DUAL表由

Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2

(1)类型,有一行值X.

从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。

Oracle下的DUAL查询如下所示:

SELECT

‘x’ FROM dual

而对等的SQL Server查询则是下面这个样子:

SELECT ‘x’

连接

Oracle用|| 符号作为连接符,而SQL Server的连接符是加号:+ .

Oracle查询如下所示:

Select ‘Name’ || ‘Last Name’

From tableName

对应的SQL Server查询如下所示:

Select ‘Name’ + ‘Last Name’

参考技术B 1、如果你是想修改数据库里的字段并保存的话,可以使用:
select t.*,t.rowid from tablename t where。。。
点击查询结果 上面的 有个小锁头的 按钮,变成开的就可以 ,编辑结果了,编辑后,点击 红钩的 按钮,以及页面上面的 确认保存更改数据的按钮(就是 有个绿色的小箭头,下面有个小圆柱--对应的红色的小箭头 是回滚按钮,不保存你的修改到数据库)。
确认后,数据修改成功,并保存到数据库。
适合修改少量数据,且此操作不锁表,既操作同时不影响其他对表的查询修改等。
2、update语句
update tablename set 字段1=值,字段2=值 where 。。
合适批量修改,锁表。
3、也可将表中的数据用SQL的语句整理好,插入新建的临时表,truncate原来的表的数据,再将临时表的数据插回原表。
参考技术C 用select for update 语句查出想改的数据后修改
或者直接用update语句按条件修改
参考技术D select 1,a,name||'的成绩' from dual;追问

谢谢啦~ (*^__^*)
如果改的比较多呢,如
(1, a, 张三 )改为(1, a, 学生张三的成绩 )

怎样改?

追答

直接在字段上并上就可以

select a,b, '学生'||name||'的成绩' grade from dual;

grade 为别名,要不列名就非法了

追问

谢谢!
呃,我问题有点多,能不能再问一个......
(1, a, 张三) 改为 ( 1, a, 张四的成绩)

这样呢,,,
怎么改?

追答

(1, a, 张三) 改为 ( 1, a, 张四的成绩) 如果只是单独改一个是可以的,如果 是name 字段的话,是不能改的,name包括很多名字,不能做统一的修改

本回答被提问者采纳

oracle 中怎样把查询结果当做已知量或赋值给某个变量?

如我想在update station
set geom=addpoint(x,y,z)where id=1
中将x,y的位置用另一个表的某行的两个值代替应该怎么操作啊,谢谢了
代码如图

需要写存储过程,先声明两个变量v_x,v_y,然后用select into语句赋值给这两个变量.以下供参考:
declare
v_x NUMBER; --必须和addpoint(x,y,z)里面的x字段类型一致
v_y NUMBER; --必须和addpoint(x,y,z)里面的y字段类型一致
...
begin
select xxx,yyy into v_x, v_y from table; --把table表中xxx,yyy的值赋给v_x,v_y.你可以自己写查询
...
update station set set geom=addpoint(v_x,v_y,z)where id=1;
...
end追问

SQL> create or replace procedure pro_into
as
declare
v_x number;
v_y number;
begin
select sta_long into v_x from sta_87 where id=2;
select sta_alt into v_y from sta_87 where id=2;
update station_87
set geom= addpoint(v_x,v_y,4214)where id=2;
end pro_into;
/
Warning: Procedure created with compilation errors
就报错了,帮忙看看有哪不对吗?多给分哦

追答

set geom= addpoint(v_x,v_y,4214)where id=2;
4214)后面是否要加一个空格

参考技术A 加个判断就好了,可以用自带的异常。 EXCEPTION WHEN NO_DATA_FOUND THEN 变量 = NULL; END ; 参考技术B 存储过程里面定义局部变量不需要declare ,去掉declare 试试。 参考技术C update station set geom=addpoint(sta_87.sta_long,sta_87.sta_alt,z)where id=1
这样不行么?追问

TT 也不行,说是标示符无效,是不是我的pl/sql developer版本不对啊?

追答

你确定表名都对吧?
你那个_87都加了?
或者是都不用加?

追问

表名都对,大侠方便加下我qq吗1269160297

追答

额...非大侠,只是凭经验的一点推论,oracle不是很瘦
公司无法聊Q,*_*

以上是关于oracle数据库,查询到的结果怎样修改??的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 两个查询结果拼接成一个,语句改怎样修改?

oracle数据库怎样查询用变量表示的字段名?

oracle单实例怎样修改端口

Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”

Oracle中 “ORA-14551: 无法在查询中执行 DML 操作” 如何解决

oracle怎样改服务名