㈠ 用plsql编写一个过程,可以输入一个雇员编号,如果该雇员的所属部门为10输出该雇员的姓名
create or replace procere sp_pro(spNo number) is
v_ename emp.ename%type;
v_empno emp.empno%type;
v_job emp.job%type;
begin
select empno,ename,emp.job into v_empno, v_ename,v_job from emp where empno=spNo;
if v_empno='10' then
dbms_output.put_line('雇员名:'||v_ename);
elsif v_empno='20' then
dbms_output.put_line('姓名:'||v_ename||'编号:'||v_empno);
else
dbms_output.put_line('姓名:'||v_ename||'编号:'||v_empno||'职位:'||v_job);
end if;
end;
/
㈡ Oracle plsql编程的三道题目
4、使用case语句更新工资,10部门提高100,20部门提高200,30部门提高300,40部门提高400。
setserveroutputon
declarev_dptemp.dpt%type;
begin
selectdptintov_dptfromempwherename='zhangsan'
case
whenv_dpt='10'then
updateempsetsal=sal+100wherename='zhangsan';
whenv_dpt='20'then
updateempsetsal=sal+200wherename='zhangsan';
whenv_dpt='30'then
updateempsetsal=sal+300wherename='zhangsan';
whenv_dpt='40'then
updateempsetsal=sal+400wherename='zhangsan';
else
dbms_output.put_line('无法更新!');
endcase;
end;
5、分别使用3种循环计算10的阶乘
简单(loop)循环
declareinumber(2):=1;snumber(10):=1;
begin
loops:=s*i;
i:=i+1;
dbms_output.put_line(s);
exitwheni>10;
endloop;
end;
for循环
declareinumber(2):=1;snumber(10):=1;
begin
loop
s:=s*i;
i:=i+1;
dbms_output.put_line(s);
exitwheni>10;
endloop;
end;
while循环
declareinumber(2):=1;snumber(10):=1;
begin
whilei<=10loop
s:=s*i;
i:=i+1;
dbms_output.put_line(s);
endloop;
end;
6、使用for循环输出一个实心三角形,底边长由用户输入。
核心代码:
begin
foriin1..5loop
dbms_output.put_line(rpad(i,8-i,'')||rpad('*',2*i-1,'*'));
endloop;
end;
㈢ 在plsql中,编写一个函数,怎么编写
直接sql语句:
select wm_concat(decode(e.empno,7369,d.dname,null)),wm_concat(decode(e.empno,7369,e.ename,null)) from emp e, dept d
where e.empno in ((select e1.mgr from emp e1 where e1.empno = 7369), 7369)
and e.deptno = d.deptno
/
function :
createorreplacefunctionprint_(p_empnoinnumber)returnvarchar2is
l_resultvarchar2(100);
begin
selectwm_concat(decode(e.empno,p_empno,d.dname,null))||','||wm_concat(decode(e.empno,p_empno,e.ename,null))
intol_result
fromempe,deptd
wheree.empnoin
((selecte1.mgrfromempe1wheree1.empno=p_empno),p_empno)
ande.deptno=d.deptno;
return(l_result);
end;
测试:
SQL>selectprint_(7369)fromal;
PRINT_(7369)
--------------------------------------------------------------------------------
RESEARCH,SMITH
SQL>
㈣ PLSQL编程查询问题 实验内容 使用Scott用户登录YGGL数据库,基于Scott用户的em
DECLARE
V_EMPNO EMP.EMPNO%TYPE:=&v;
V_DEPTNO EMP.DEPTNO%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('V_EMPNO='||V_EMPNO);
SELECT DEPTNO INTO V_DEPTNO FROM EMP E WHERE E.EMPNO =V_EMPNO;
UPDATE EMP E
SET E.SAL = E.SAL + (CASE E.DEPTNO
WHEN 10 THEN
100
WHEN 20 THEN
200
WHEN 30 THEN
300
ELSE
0
END)
WHERE E.EMPNO = V_EMPNO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
END;
DECLARE
V_ENAME EMP.ENAME%TYPE:='SMITH';
V_COUNT NUMBER:=0;
V_SAL EMP.SAL%TYPE;
V_EMPNO EMP.EMPNO%TYPE;
CURSOR C IS SELECT EMPNO,SAL FROM EMP WHERE ENAME=V_ENAME;
BEGIN
SELECT COUNT(1) INTO V_COUNT FROM EMP E WHERE E.ENAME =V_ENAME;
IF V_COUNT=1 THEN
SELECT E.SAL INTO V_SAL FROM EMP E WHERE E.ENAME =V_ENAME;
DBMS_OUTPUT.PUT_LINE('SAL='||V_SAL);
ELSE
FOR V IN C LOOP
DBMS_OUTPUT.PUT_LINE('EMPNO='||V.EMPNO||',SAL='||V.SAL);
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
END;
㈤ 这个plsql的程序哪里不对呢第七行一直报错! 说是字符到数值的转换错误,我抄写的书上的例子
改成这样试试vid:=to_number(&teacher_id)
㈥ 请帮忙编写一条PLSQL语句,包含年龄和时间
大概是这样:
select p.name,p.age,r.registerdate,r.doctor
from t_patient p, t_patientregister r
where p.patientid = r.patientid
and to_char(t.registerdate,'yyyy-mm-dd') = '2000-01-01'
㈦ plsql developer 怎么编写pl/sql程序
1、首先plsql developer连接小编这里就不做介绍了大家不知道可以看看这篇文章:http://www.pc6.com/infoview/Article_74137.html
2、登陆成功后即可进入对象浏览器窗口界面
3、在对象浏览器选择“my object”,这里边就是SCOTT(当前登陆的用户的所有object)
4、找到table文件夹,里边就是当前账户的所有表格
5、选中需要查看的表——》右键——》选中“查询数据”【query data】,即可看到数据了
6、新建——》选中sql window,即可打开sql窗口了
7、在sql窗口内输入sql语句,全选,点击执行即可查看到结果,功能很强大
8、选中表——》右键——》Edit(编辑),可以对表进行编辑。
㈧ plsql怎样编写脚本
plsql怎样编写脚本
1.将以上内容存为shortcuts.txt,复制到X:\Program Files\PLSQL Developer\PlugIns目录下,Win7要注意权限
2.菜单中选 Tools -> Perferences -> Editor -> Autoreplaces
3.重启PL/SQL Developer,输入等号左侧缩写按下“空格”,会自动补全,那个效率啊;)
㈨ Oracle plsql编程的3道题目
1、用户输入雇员编号,查询该雇员的所有信息。
createorreplaceprocerep_test1
(v_empnonumber)
as
v_enamevarchar2(10);
v_jobvarchar2(20);
v_mgrnumber;
v_hiredatevarchar2(10);
v_salnumber;
v_commnumber;
v_deptnonumber;
begin
selectename,job,mgr,to_char(hiredate,'yyyy-mm-dd'),sal,comm,deptnointo
v_ename,v_job,v_mgr,v_hiredate,v_sal,v_comm,v_deptno
fromempwhereempno=v_empno;
dbms_output.put_line(v_empno||','||v_ename||','||v_job||','||v_mgr||','||v_hiredate||','||v_sal||','||v_comm||','||v_deptno);
end;
2、用户输入雇员编号,将该雇员的工资提高500。
createorreplaceprocerep_test2
(v_empnonumber)
as
begin
updateempsetsal=sal+500whereempno=v_empno;
commit;
end;
3、用户输入雇员姓名,如果该雇员的工资低于2000,则将他的工资提高500,如果该雇员的工资高于3000,则将他的工资降低500,否则不变。
createorreplaceprocerep_test3
(v_enamevarchar2)
as
begin
updateempsetsal=casewhensal<2000thensal+500
whensal>3000thensal-500elsesalendwhereename=v_ename;
commit;
end;