oracle数据库,查询到的结果怎样修改??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库,查询到的结果怎样修改??相关的知识,希望对你有一定的参考价值。
如,查询到的结果为(1, a, 张三)改为(1, a, 张三的成绩 )
查询到的结果可用for update来修改。
如:
select * from emp;查询到以下数据:
此时语句可改写:
然后点击如图图标:
此时可以修改表中内容,如将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的位置用另一个表的某行的两个值代替应该怎么操作啊,谢谢了
代码如图
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)后面是否要加一个空格
这样不行么?追问
TT 也不行,说是标示符无效,是不是我的pl/sql developer版本不对啊?
追答你确定表名都对吧?
你那个_87都加了?
或者是都不用加?
表名都对,大侠方便加下我qq吗1269160297
追答额...非大侠,只是凭经验的一点推论,oracle不是很瘦
公司无法聊Q,*_*
以上是关于oracle数据库,查询到的结果怎样修改??的主要内容,如果未能解决你的问题,请参考以下文章
SQL server 两个查询结果拼接成一个,语句改怎样修改?
Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”