<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 84,  comments - 54,  trackbacks - 0

    1、?編寫一個程序塊,從emp表中顯示名為’SMITH’的雇員的薪水和職位。
    ?SET SERVEROUTPUT ON
    ?declare
    ?v_sal emp.sal%type;
    ?v_job emp.job%type;

    ?begin
    ?select sal,job into v_sal,v_job from emp where ename = 'SMITH';
    ?DBMS_OUTPUT.put_line(v_sal||' '||v_job);
    ?END;

    提示用戶輸入'SMITH'
    ?SET SERVEROUTPUT ON
    ?declare
    ?v_sal emp.sal%type;
    ?v_job emp.job%type;
    ?v_name emp.ename%type:='&v_name';--此處在外面加入單引號,這樣在輸入的時候就直接可以輸入字符串了

    ?begin
    ?select sal,job into v_sal,v_job from emp where ename = v_name;
    ?DBMS_OUTPUT.put_line(v_sal||' '||v_job);
    ?END;

    2、?編寫一個程序塊,接受用戶輸入的一個部門號,從dept表中顯示該部門的名稱與所在的位置。
    ?SET SERVEROUTPUT ON
    ?declare
    ?v_dname? dept.dname%type;
    ?v_loc? dept.loc%type;
    ?v_deptno? dept.deptno%type:=&v_deptno;

    ?begin
    ?select dname,loc into v_dname,v_loc from dept where deptno = v_deptno;
    ?DBMS_OUTPUT.put_line(v_dname||'+'||v_loc);

    ?EXCEPTION
    ?WHEN no_data_found THEN
    ?DBMS_OUTPUT.put_line('您輸入的部門號不存在!');

    ??end;

    3、?接受兩個數相除并且顯示結果,如果第二個數為0,則顯示消息“除數不能為0”。

    ?SET SERVEROUTPUT ON
    ?DECLARE
    ?v_divsor REAL:=&v_divsor;--除數
    ?v_dividend REAL:=&v_dividend;--被除數
    ?v_result REAL;
    ?
    ?BEGIN
    ?v_result := v_dividend/v_divsor;
    ?DBMS_OUTPUT.put_line('結果為'||v_result);

    ?EXCEPTION
    ?WHEN ZERO_DIVIDE THEN
    ?DBMS_OUTPUT.put_line('除數不能為零');
    ?END;

    4、?編寫一個程序塊,接受一個雇員名,從emp表中顯示該雇員的工作崗位與薪水,若輸入的雇員名不存在,顯示“該雇員不存在”信息。

    ?SET SERVEROUTPUT ON
    ?DECLARE
    ?v_job emp.job%type;
    ?v_sal emp.sal%type;
    ?v_ename emp.ename%type:='&v_ename';--輸入員工姓名

    ?BEGIN
    ?select job,sal into v_job,v_sal from emp where ename = v_ename;
    ?DBMS_OUTPUT.put_line('員工工作'||v_job||'員工薪水'||v_sal);

    ?EXCEPTION
    ?WHEN NO_DATA_FOUND THEN
    ?DBMS_OUTPUT.put_line('您要查找的員工不存在.');?

    ?END;?

    5、?編寫一個程序塊,利用%type屬性,接受一個雇員號,從emp表中顯示該雇員的整體薪水(即,薪水+傭金)

    ?SET SERVEROUTPUT ON
    ?DECLARE
    ?v_empno emp.empno%type:=&v_empno;--輸入員工編號
    ?v_saladdcomm emp.sal%type;
    ?v_sal emp.sal%type;
    ?v_comm?emp.comm%type;
    ?
    ?BEGIN
    ?select?sal,comm into v_sal,v_comm from emp where empno = v_empno;

    ?v_saladdcomm := v_sal + NVL(v_comm,0);--這里需要用到NVL函數,如果v_comm為NULL的話則設為0
    ????????????????????????????????????????????????????????????????????--否則如果v_comm為空的話,計算出來的值則為空???????????????????????????

    ?DBMS_OUTPUT.put_line(v_empno||'的整體薪水是:'||v_saladdcomm);

    ?EXCEPTION
    ?WHEN NO_DATA_FOUND THEN
    ?DBMS_OUTPUT.put_line('您要查找的員工編號不存在!');

    ?END;

    posted on 2006-09-05 21:42 JavaCoffe 閱讀(1100) 評論(1)  編輯  收藏 所屬分類: Oralce&&PL/SQL


    FeedBack:
    # re: PLSQL小例子
    2006-09-09 16:13 | 徐海東
    6、 編寫一個程序塊,將emp表中前5人的名字顯示出來。

    不知道不使用游標的方法能否做出來

    以下為使用游標的方法

    1>使用for 循環實現
    DECLARE
    CURSOR c_emp IS select ename from emp where rownum < 6;

    BEGIN

    FOR v_emp IN c_emp LOOP
    DBMS_OUTPUT.put_line(v_emp.ename);
    END LOOP;

    END;

    2>使用while方法
    DECLARE
    CURSOR c_emp IS select ename from emp where rownum < 6;
    v_ename emp.ename%type;
    v_count number:=1;

    BEGIN
    OPEN c_emp;
    while v_count < 6 loop

    fetch c_emp into v_ename;
    DBMS_OUTPUT.put_line(v_ename);
    v_count := v_count+1;

    end loop;
    close c_emp;
    end;

    使用while的第二種用法

    DECLARE
    CURSOR c_emp IS select ename from emp where rownum < 6;
    v_ename emp.ename%type;

    BEGIN
    OPEN c_emp;
    fetch c_emp into v_ename;

    --剛開始要讓游標向下移動一行接下來才能判斷是否已經
    --取道到一行紀錄

    while c_emp%found loop

    DBMS_OUTPUT.put_line(v_ename);
    fetch c_emp into v_ename;

    end loop;

    close c_emp;
    end;
    3>使用LOOP循環的方法
    set serveroutput on
    DECLARE
    CURSOR c_emp IS select ename from emp where rownum < 6;
    v_ename emp.ename%type;

    BEGIN
    OPEN c_emp;

    LOOP
    fetch c_emp into v_ename;
    DBMS_OUTPUT.put_line(v_ename);
    EXIT WHEN c_emp%notfound;
    END LOOP;

    CLOSE c_emp;
    END;

    7、 某公司要根據雇員的職位來加薪,公司決定按如下列加薪結構處理:
    Designation Raise
    Clerk 500
    Salesman 1000
    Analyst 1500
    Otherwise 2000
    編寫一個程序塊,接受一個雇員名,從emp表中實現上述加薪處理。
    set serveroutput on
    DECLARE
    v_ename emp.ename%type:='&v_ename';
    v_job emp.job%type;
    v_addSal emp.sal%type;--額外增加的工資
    v_sal emp.sal%type;

    BEGIN
    select job into v_job from emp where ename = v_ename;
    select sal into v_sal from emp where ename = v_ename;

    IF v_job = 'Clerk' then

    v_addSal := 500;
    elsif v_job = 'Salesman' then
    v_addSal := 1000;
    elsif v_job = 'Analyst' then
    v_addSal := 1500;
    else
    v_addSal := 2000;

    END IF;

    v_addSal := v_addSal + v_sal;
    UPDATE emp SET sal = v_addSal where ename = v_ename;
    END;

    8、 使用For循環游標,接受一個部門號,從emp表中顯示該部門的所有雇員的姓名,工作和薪水。
    set serveroutput on
    DECLARE
    v_deptno emp.deptno%type:=&v_deptno;
    v_ename emp.ename%type;
    v_job emp.job%type;
    v_sal emp.sal%type;

    CURSOR c_emp IS select ename,job,sal from emp where deptno = v_deptno;


    BEGIN
    DBMS_OUTPUT.put_line('deptno'||' '||'ename'||' '||'job'||' '||'sal');
    for v_emp IN c_emp LOOP
    DBMS_OUTPUT.put_line(v_deptno||' '||v_emp.ename||' '||v_emp.job||' '||v_emp.sal);
    END LOOP;

    END;  回復  更多評論
      
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(5)

    隨筆分類(80)

    收藏夾(1)

    最新隨筆

    積分與排名

    • 積分 - 58039
    • 排名 - 897

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产亚洲大尺度无码无码专线| 成人浮力影院免费看| 人人狠狠综合久久亚洲高清| 久久亚洲精品国产亚洲老地址| www.免费在线观看| 亚洲精品国产情侣av在线| 最近中文字幕2019高清免费| 在线电影你懂的亚洲| 国产91免费视频| 亚洲天堂免费在线| 免费看大黄高清网站视频在线| 亚洲AV无码一区二区三区性色| 啊v在线免费观看| 成人午夜影视全部免费看| 久久亚洲2019中文字幕| 羞羞视频免费网站在线看| 亚洲AV无码一区二区三区DV| 99久久精品免费视频| 亚洲天堂一区二区三区| 成年女人免费v片| 免费国产va在线观看| 亚洲精品无码不卡在线播HE| 久久精品国产大片免费观看| 久久国产亚洲高清观看| 国内大片在线免费看| 亚洲视频在线免费| 99ri精品国产亚洲| 在线观看视频免费国语| www.xxxx.com日本免费| 亚洲精品自产拍在线观看动漫| 国产91色综合久久免费| 美女啪啪网站又黄又免费| 亚洲Av永久无码精品三区在线| 亚洲三级在线免费观看| 精品一区二区三区无码免费直播| 亚洲精品白浆高清久久久久久| 麻豆视频免费播放| 精品久久久久久无码免费| 中文字幕亚洲综合小综合在线 | 亚洲日韩乱码久久久久久| 日本特黄a级高清免费大片|