标签:style ar 使用 for sp 数据 on 问题 ad
1、select 查询
单独的一条 select 语句
在PL/SQL中通过SELECT从数据库中检索数据:
语法:
<1> 必须使用INTO子句
<2> 查询必须并且只能返回一行
<3> 可以使用完整的SELECT 语法
使用SELECT 命令,可以从数据库中取出单行数据 | |||||
使用DML命令,修改数据库中的行 | |||||
使用COMMIT 或ROLLBACK 命令控制事务 | |||||
通过EXECUTE IMMEDIATE,执行DDL |
1、查看字段类型
select * From all_tab_columns where table_name=upper(‘表名‘);
2、is与as
在 存储过程 和 函数 中没有区别;在 视图 中只能用 AS 不能用 IS ;在 游标 中只能用 IS 不能用 AS 。 从其定义也可以看出没什么区别。
create [or replace] procedure procedure_name
[(parameter_name [in | out | in out] type [,........])]
{is | as}
begin
procedure_body
end procedure_name;
3、EXECUTE IMMEDIATE。解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块。
使用技巧:
1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交
如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE
IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据
2. 不支持返回多行的查询。
3. 当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号;
4.举例:execute immediate ‘select count(1) from tempA‘。
问题:如何让过程返回数据集?
回答:
关键有两点:一是使用out类型的参数。二是该参数使用特殊数据类型:系统引用游标类型(sys_refCursor)。
过程返回数据集,可以在PL/SQL程序中由另一个块或过程接收;
问题:cursor类型与sys_refCursor类型有什么区别?
回答:
Cursor是游标类型,代表是数据集本身,只能在PL/SQL程序中关闭;可以通过游标FOR循环或者定义cursor来完成。
而sys_refCursor代表的是游标的引用,即数据集的引用地址,只能通过open for语句来完成。
两者的最大区别是后者可以将这个地址传递给其它程序。
问题:据说“ref cursor类型”也能够返回数据集,与sys_refCursor有什么关系?
回答: ref cursor是Oracle旧版本中使用的数据类型,用这种对象的缺点在于必须在包中定义;而现在用ys_refCursor类型,可以直接使用。
子程序可以独立编译并存储在Oracle数据库。使用CREATE语句显式创建的子程序就是一个"存储"子程序。一旦编译并保存到数据词典中,它就成了一个模式对象(schema object),可以被许多连到数据库的应用程序调用。
定义在包内的存储子程序称为打包子程序(packaged subprogram);单独定义的存储子程序称为独立子程序(standalone subprogram);而在另外一个子程序或PL/SQL块内定义的存储子程序称为本地子程序,这样的子程序不能被其他应用程序调用,只供本地使用。
标签:style ar 使用 for sp 数据 on 问题 ad
原文地址:http://www.cnblogs.com/SunBlog/p/4033572.html