⑴ plsql 如何在已有的表中再加一列
1、首先,在电脑中找到PLSQL Developer;
(1)plsql的基本语法扩展阅读:
plsql基本命令:
PL/SQL使用的数据库操作语言还是基于SQL的,所以熟悉SQL是进行PL/SQL编程的基础。SQL语言的分类情况大致如下:
1、数义语言(DDL):Create,Drop,Grant,Revoke,…
2、数据操纵语言(DML):Update,Insert,Delete,…
3、数据控制语言(DCL):Commit,Rollback,Savepoint,…
4、其他:Alter System,Connect,Allocate, …
⑵ plsql查询语句中的not in什么意思
查询不在这个范围类的数据。
例如:select * from student where classID notin (1,4,5)查出的就是classID不在1,4,5这个范围内的数据。
不建议用not in这个关键词来做查询,理由:
1、效率低,2、在使用中容易出现问题,或查询结果有误
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Proceral Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。
在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。
(2)plsql的基本语法扩展阅读:
plsql特性:
1、PL/SQL完善器
该完善器允许您通过用户定义的规则对SQL和PL/SQL代码进行规范化处理。在编译、保存、打开一个文件时,代码将自动被规范化。该特性提高了您编码的生产力,改善了PL/SQL代码的可读性,促进了大规模工作团队的协作。
2、SQL 窗口
该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。
3、命令窗口
使用PL/SQL Developer的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同的感观,另外还增加了一个内置的带语法加强特性的脚本编辑器。这样,您就可以开发自己的脚本,无需编辑脚本/保存脚本/转换为SQL*Plus/运行脚本过程,也不用离开PL/SQL Developer集成开发环境。
参考资料来源:网络-plsql
⑶ PLSQL中,select case..when.. then..什么意思怎么用
case when ... then .. when .. then ... end
这种表达式,是sql的不同条件分支结果。
举例如下,
1、创建数据表,create table test_student(stu_id number, class_id number);
⑷ plsql自定义函数 不需要返回值怎样写
游标变量
通过游标,我们可以取得返回结果集(往往是select语句查询的结果集)中的任何一行数据,从而提高共享的效率。
参照变量refcursor使用:
定义游标:
1.定义一个游标类型:
Type自定义游标名isrefcursor;2.定义一个游标变量:变量名自定义游标名;
打开游标:
Open游标变量forselect语句;
取出当前游标指向的行:
Fetch游标变量into其他变量;
判断游标是否指向记录最后:
游标变量%notfound;关闭游标:Close游标名。
第二种:
var变量名变量类型
call函数名(参数值,...)into:变量名;print变量名第三种:
select函数名(参数,...)fromal;
案例:请编写一个函数,可以接收用户名并返回该用户的年薪。createfunctioninName_outSal(v_in_namevarchar2)returnnumberis
v_annual_salnumber;begin
select(sal+nvl(comm,0))*13intov_annual_salfromempwhereename=v_in_name;returnv_annual_sal;end;/
函数和过程的区别:
1、函数必须有返回值,而过程可以没有;2、函数和过程在java中调用的方式不一样;
java中调用oracle函数可以在select语句中直接调用,如:select自定义的函数名(参数)from表;
过程则是使用CallableStatement完成调用。
Java调用函数方式:packagecom.test;
importjava.sql.ResultSet;importjava.sql.SQLException;publicclassTestFunction{
//如何在java中调用自己编写的函数
publicstaticvoidmain(String[]args){
Stringsql="selectinName_outSal('KING')annualfromal";ResultSetrs=SQLHelper.executeQuery(sql,null);try{
if(rs.next()){
System.out.println(rs.getDouble("annual"));//此处可以用数字或别名接收返回值}
}catch(SQLExceptione){e.printStackTrace();}finally{
if(rs!=null){try{
rs.close();
}catch(SQLExceptione){e.printStackTrace();}}
rs=null;}}
Java调用过程方式:packagecom.test;
importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;publicclassTestProcere{
//调用oracle中update_sal存储过程
publicstaticvoidmain(String[]args){Connectionct=null;
CallableStatementcs=null;try{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");//得到连接
ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//创建CallableStatement接口引用对象
cs=ct.prepareCall("{callupdate_sal(?,?)}");//给?赋值
cs.setString(1,"BOSS");cs.setFloat(2,8888f);//执行我们的语句cs.execute();//提交
ct.commit();
}catch(Exceptione){e.printStackTrace();}finally{try{
if(cs!=null){cs.close();}
if(ct!=null){ct.close();}
}catch(Exceptione2){e2.printStackTrace();}
cs=null;ct=null;}
}}
pl/sql知识--包(扩张了解,自己看)
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。1、我们可以使用createpackage命令来创建包:建包基本语法:
create[orreplace]package包名is
procere过程名(变量名变量类型,...);
function函数名(变量名变量类型,...)return数据类型;end;/
包的规范:只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体:用于实现包规范的过程和函数。
请编写一个包,该包有一个过程,该过程可以接收用户名和新的薪水。(将来用于通过用户去更新薪水)还有一个函数,该函数可以接收一个用户名(将来要实现得到该用户的年薪是多少)
createpackageemp_packageis
procereupdate_sal(v_in_enamevarchar2,v_in_newsalnumber);functioninName_outSal(v_in_namevarchar2)returnnumber;end;
2、建立包体可以使用createpackagebody命令建立包体基本语法:
createorreplacepackagebody包名is
procere过程名(变量名变量类型,...)is--声明变量;begin
--执行语句;exception
when异常名then--异常处理;end;
function函数名(变量名变量类型,...)return数据类型is--声明变量;begin
--执行语句;end;end;/
案例:请实现前面定义的包中的过程和函数。
gin
select(sal+nvl(comm,0))*13intov_annual_salfromempwhere
ename=v_in_name;
returnv_annual_sal;end;end;/
细节说明:
1、包体中要现实的函数或过程,应当在包规范中声明;
2、在调用包中的某个函数或过程的时候,需要使用对应的方法才可以调用。3、如何调用包的过程或函数
当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。调用基本方法:
exec方案名.包名.过程名(参数,...);call方案名.包名.函数名(参数,...);
也可以直接用select方案名.包名.函数名(参数,...)fromal;
⑸ 求教PLSQL中update的语法
UPDATE B SET B.最终得分=
(
SELECT
DECODE(NVL(A.得分1,0),0
,DECODE(NVL(A.得分2,0),0
,A.得分3
,A.得分2)
,A.得分1)
FROM A WHERE A.ID = B.ID
)
;
主要用了DECODE函数
DECODE(<EXP>,<VAL>,<TRUE>,<FALSE>)
<EXP>:表达式,判断逻辑
<VAL>:值
<TRUE>:当<EXP>值等于<VAL>时赋的值
<FALSE>:当<EXP>值不等于<VAL>时赋的值