최근 방영중인 일본드라마 절대그이-絶対彼氏의 엔딩곡.
맘에 든다.
드라마도 그냥 저냥 볼만하고.
'감상문' 카테고리의 다른 글
[감상] 과속스캔들 (0) | 2009.01.29 |
---|---|
[감상] 작전명 발키리 (0) | 2009.01.29 |
[감상] 대한민국 개발자 희망보고서 - 오병곤 (0) | 2009.01.11 |
리타 길들이기 (0) | 2009.01.06 |
냉정과 열정 사이 Rosso - 에쿠니 카오리 (0) | 2008.06.26 |
최근 방영중인 일본드라마 절대그이-絶対彼氏의 엔딩곡.
[감상] 과속스캔들 (0) | 2009.01.29 |
---|---|
[감상] 작전명 발키리 (0) | 2009.01.29 |
[감상] 대한민국 개발자 희망보고서 - 오병곤 (0) | 2009.01.11 |
리타 길들이기 (0) | 2009.01.06 |
냉정과 열정 사이 Rosso - 에쿠니 카오리 (0) | 2008.06.26 |
[감상] 과속스캔들 (0) | 2009.01.29 |
---|---|
[감상] 작전명 발키리 (0) | 2009.01.29 |
[감상] 대한민국 개발자 희망보고서 - 오병곤 (0) | 2009.01.11 |
리타 길들이기 (0) | 2009.01.06 |
絢香 ayaka - おかえり (0) | 2008.06.26 |
- PLSQL은 SQL에 프로그래맹 언어 설계 기능을 추가한 것이다.
- SQL의 데이터 조작문 및 질의문은 프로시저 단위코드에 포함된다.
< PL/SQL >
- Anonymou block : 평상시 script로 저장했다가 사용
- Function, Procedure
- Package : Function과 Procedure의 모음
- Trigger : 이벤트에 반응하는 로직
< PL/SQL의 블록구조 >
-- DECLARE
변수선언, 커서, 사용자가 정의한 예외사항
-- BEGIN
SQL문, PL/SQL문
-- EXCEPTION
오류가 발생할 때의 수행작업
-- END;
※첨부파일 실행시 스키마를 고려하여 DB에 접속해야 한다.
< PL/SQL 공통 >
-- 생성한 함수/프로시져 조회
SQL> SELECT DISTINCT NAME FROM USER_SOURCE;
--생성 후에는 꼭 에러 여부를 확인한다.
SQL> SELECT * FROM USER_ERRORS; //마지막에 실행한 명령의 에러를 가지고 있다.
< PLSQL - EditPlus환경설정 >
※첨부파일
plsql2.zip
plsql2_구문강조_사용설명서.txt
======================================================================
< PLSQL - variable >
※첨부파일
plsql_variable01.sql
plsql_variable02.sql
plsql_variable03.sql
< PLSQL - cursor >
※첨부파일
plsql_cursor01.sql
plsql_cursor02.sql
plsql_cursor03.sql
plsql_cursor04.sql
plsql_cursor05.sql
< PLSQL - exception >
※첨부파일
plsql_exception01.sql
plsql_exception02.sql
< PLSQL - 종합문제 >
※첨부파일
plsql_exe01.sql : 종합문제 NO1 :사원별 급여현황에 따른 '*',급여 출력
plsql_exe02.sql : 종합문제 NO3 :급여 누적값 출력(1)
plsql_exe03.sql : 종합문제 NO3 :급여 누적값 출력(2)
plsql_exe04.sql : 종합문제 NO2 : 년도별 입사한 사원수 출력
======================================================================
** PROCEDURE : 어떠한 작업처리가 목적이다.
VALUE를 반환 할수도 안할 수도 있다.
SQL문에서 사용불가,
여러개의 인자를 받을수있다.
** FUNCTION : 반드시 한개의 VALUE를 반환한다.
SQL문에서 사용가능(사용자 정의 함수)
< PLSQL - PROCEDURE(프로시져) >
※첨부파일
procedure01_raise_salary.sql
procedure02_updownsalary.sql
procedure03_query_emp.sql
procedure03_query_emp_plsql.sql
< PLSQL - FUNCTION(함수) >
※첨부파일
function01_get_sal.sql : 사원번호를 받아 급여를 출력하는 함수
function02_annsal.sql : 연봉을 구하는 함수
function03_find_dname.sql : 특정 사번을 그 사원의 부서명을 출력하는 함수
< PLSQL - TRIGGER >
※첨부파일
trigger01_secure_emp.sql
trigger02_copy_insert.sql
trigger03_update_dept.sql
trigger04_delete_dept.sql
trigger05_delete_emp.sql
trigger06_set_null_emp.sql
trigger07_update_cascade_emp.sql
trigger08_audit_emp_values.sql
[펌] MySQL 사용하기 (0) | 2008.11.25 |
---|---|
[펌] mysql root 암호 분실 시 (1) | 2008.11.25 |
PL SQL문제 (0) | 2008.01.10 |
DBMS_LOCK 사용 시 에러 (0) | 2008.01.10 |
[펌]SQL*plus FAQ 및 TIPS (0) | 2008.01.09 |
금일 PL SQL문제중 이런게 나왔었다. 잘 기억은 안난다만... 인사관리를 짜라고 했는데...
등록되어 있는 사원들의 평균 급여를 내어 출력하고 평균 급여가 메니져보다 높은 사람의 급여를
15% 삭감하고, 삭감할 사람의 나이가 평균 나이보다 높을 사람의 경우에는 그대로 두어라...
물론 실제 문제랑은 많이 차이가 있음. 책에도 이런문제는 많이 있을 듯...
주요 조건은 프로시져로 짜야하며 패키지와를 시켜야 하고 폴더는 어디에 주석은 어떻게 달아야 하고
제한시간 1시간. 저건 문제중 한개이고... 총 문제수 5문제......-_-;;;;
[펌] mysql root 암호 분실 시 (1) | 2008.11.25 |
---|---|
[펌]PLSQL 초보 (0) | 2008.01.10 |
DBMS_LOCK 사용 시 에러 (0) | 2008.01.10 |
[펌]SQL*plus FAQ 및 TIPS (0) | 2008.01.09 |
[펌]DECODE 이용사례 (4) - BETWEEN OPERATOR (0) | 2008.01.09 |
[펌]PLSQL 초보 (0) | 2008.01.10 |
---|---|
PL SQL문제 (0) | 2008.01.10 |
[펌]SQL*plus FAQ 및 TIPS (0) | 2008.01.09 |
[펌]DECODE 이용사례 (4) - BETWEEN OPERATOR (0) | 2008.01.09 |
[펌]DECODE를 이용하여 원치 않는 자료를 없애는 방법 (0) | 2008.01.09 |
(V7.X ~ V8.X) : SQL*plus FAQ 및 TIPS ============================================= Q) Row wrapping없이 flat ASCII file을 만드는 방법 Q) 두 개의 Date type column 사이의 평균 시간을 구하는 방법 Q) Ampersand나 특수 문자를 갖는 데이타를 insert하는 방법 Q) SQL 내의 문자열 주변에 인용부호를 생성하거나 QUOTES를 생성하는 방법 Q) `LIKE` 연산자를 사용하여 case insensitive search를 할 수 있는 방법 Q) Column delimited flat file을 생성하는 방법 Q) Product_User_Profile에 관하여 1. Q) Row wrapping없이 flat ASCII file을 만드는 방법은 무엇입니까? A) `SPOOL` command와 `SET LINESIZE` 와 `SET BUFFER` command를 사용하시기 바랍니다. sql query를 화일에 저장하기 위해서는 spool command를 사용하시면 됩니다. 화일 확장자를 기술하지 않으면, O/S에 따라서 다르지만, 대부분의 O/S에서는 .lst나 .lis를 사용합니다. SQL*plus에서 flat file을 생성하기 위해서는 먼저 다음과 같은 SET command를 기술하여야 합니다. SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF 위의 command를 기술한 후에, spool command를 사용하시면 됩니다. 2. Q) 두 개의 Date type column 사이의 평균 시간을 구하는 방법은 무엇입니까? A) 다음과 같은 두 개의 row를 가지는 date field가 있다고 가정합니다. 01-jan-96 01:10 01-jan-96 01:20 sql> select avg(to_number(to_char(a, `MMDDYYHHMI`))) from x; AVG(TO_NUMBER(TO_CHAR(A,`MMDDYYHHMI`))) --------------------------------------- 101960115 즉, 1:10과 1:20 사이의 평균 시간은 1:15입니다. 3. Q) Ampersand나 특수 문자를 갖는 데이타를 insert하는 방법은 무엇입니까? A) 해결 방법은 세 가지가 있습니다. 1> SQL*plus에서 SET DEFINE OFF나 SET SCAN OFF를 실행하여 substitution variable(&)을 turn off시키는 방법입니다. (Example) sql> SET DEFINE OFF sql> INSERT INTO table_name VALUES(`AT&T`); / 1 row created 2> SET DEFINE ON 상태로 유지시키면서 substitution variable을 다른 non-alphanumeric 문자나 non-white space 문자(*, % 등등)로 대체시킨다. (Example) sql> SET DEFINE % sql> INSERT INTO table_name VALUES(`AT&T`); / 1 row created 3> SET ESCAPE ON 상태에서(DEFINE은 &로, SCAN은 ON상태로 유지) 특수 문자 앞에 escape 문자인 backslash(``)를 선행하도록 합니다. (Example) sql> SET ESCAPE ON sql> SHOW ESCAPE ESCAPE "" (hex 5c) sql> INSERT INTO table_name VALUES (`select * from emp where ename=&1`); 1 row created. sql> select * from table_name; COL1 --------------------------------------------------------- SELECT * FROM EMP WHERE ENAME=&1 4. Q) SQL 내의 문자열 주변에 인용부호를 생성하거나 QUOTES를 둘 수 있습니까? A) 해결 방법은 다음과 같습니다. 1> Single quotation mark를 생성하기 위해서는 4 single quote(````)를 사용하 시기 바랍니다. (Example) sql> select ```` from dual; 위의 문장을 실행 시 return되는 결과는 다음과 같습니다. ` - ` 2> 문자열 주변에 single quote를 두기 위해서는 3 single quote 안에(```) 문자 열을 포함시키면 됩니다. (Example) sql> select ```character string in quotes``` result from dual; 위의 문장을 실행 시 return되는 결과는 다음과 같습니다. RESULT ----------------------------------------------- `CHARACTER STRING IN QUOTES` 3> 참고로, Literal single quote를 생성하기 위해 연속적인 single quote mark 를 사용하는 방법은 다음과 같습니다. (Example) srw.do_sql(`select decode(dname, ``NONE``, NULL, ``A``) from dept where deptno = 10`); 위의 문장을 실행 시 return되는 결과는 다음과 같습니다. select decode(dname, `NONE`, NULL, `A`) from dept where deptno = 10 (Example) DECLARE a varchar2(200); q char(1) := ````; BEGIN a := ```this is a ` || q || `quoted`` string` || q; END; 위의 문장을 수행 결과 스트링 a에는 `this is a `quoted` string` 이 저장됩니다. 5. Q) `LIKE` 연산자를 사용하여 case insensitive search를 할 수 있는 방법은 무엇입니까? A) LIKE 연산자를 사용하여 비교하기 위해 필드에 `UPPER` 함수를 사용하시면 됩니다. 6. Q) Column delimited flat file을 생성하는 방법은 무엇입니까? A) 해결 방법은 두 가지가 있습니다. 1> query 내에서 column 분리자를 concatenate시키면 됩니다. (Example) To delineate column text with TABs: ------------------------------------ sql> select deptno || chr(9) || dname from dept; DEPTNO || CHR(9) || DNAME ------------------------------------ 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS CHR(9) 문자함수는 query 문 안에 TAB을 embedding하기 위해 사용됩니다. (Example) To deleneate column test with COMMAs: ------------------------------------- sql> select deptno || `,` || dname from dept; DEPTNO || `,` || DNAME ------------------------------------- 10,ACCOUNTING 20,RESEARCH 30,SALES 40,OPERATIONS Query 결과를 화일로 보내기 전에 다음과 같이 SET COMMAND를 수행하시기 바랍니다. SET TERMOUT OFF SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SPOOL file_name 원하는 Query문 수행 후에는 다음과 같이 다시 setting 하시기 바랍니다. SPOOL OFF SET TERMOUT ON SQL*plus 버젼 3.0.x와 3.1.x에서는 컬럼 사이의 간격을 조정하기 위해 column 분리자를 명시해 주는 SET COMMAND가 지원되지 않습니다. 2> SQL*plus 3.2 이상의 버젼에서는 COLSEP command를 사용하시면 됩니다. Query 결과를 comma delimited flat file에 보내기 전에 다음과 같이 SET COMMAND 를 수행하시기 바랍니다. SET TERMOUT OFF SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET COLSEP `,` SPOOL file_name 원하는 Query 문 수행 후에는 다음과 같이 다시 setting하시기 바랍니다. SPOOL OFF SET TERMOUT ON 7. Q) PUPBLD.SQL 스크립트를 찾지 못하여 public synonym을 drop할 수 없습니다. 해결 방법은 무엇이며, Product_User_Profile에 관하여 알고 싶습니다. A) Product_User_Profile은 product-level security를 제공하기 위해 DBA가 수정할 수 있는 테이블입니다. 대부분의 오라클 product들은 SQL GRANT와 REVOKE command에 의해 제공되는 user-level security와 user role들을 추가한 product-level security를 제공하는 이 테이블을 사용합니다. 이 테이블을 생성하기 위해서는 SYSTEM으로 connect하여 PUPBLD.SQL이나 V7PUP.SQL을 돌려주어야 합니다. PUPBLD.SQL 스크립트를 실행하면 SYSTEM 계정 내에 product_profile과 user_profile 테이블을 생성해 줍니다. 여기에는 두 개의 view가 있는데, product_privs와 user_privs가 그것입니다. 사용자들은 product_profile과 user_profile이라는 이름으로 조회할 수 있습 니다. 이 view를 조회하면 해당 계정에 관한 privileges와 profile들을 알 수 있습니다. 그런데, 현재 사용 중인 일부 product나 user profile structure는 제거하지 않기 때문에 manual하게 table, synonym, view들을 drop해 주어야 합니다. 만약, delete해야 할 내재하는 structure가 있다면, 다음의 SQL문을 SQL*plus 에서 수행해 주시기 바랍니다. drop synonym product_user_profile; drop table product_profile; drop table product_user_profile; drop view product_privs; revoke select on product_privs from public; drop public synonym product_profile; drop synonym product_user_profile; drop public synonym product_user_profile; drop table user_profile; revoke select on user_profile from public; drop view user_privs; revoke select, update, insert, delete on user_privs from public; drop public synonym user_profile; |
PL SQL문제 (0) | 2008.01.10 |
---|---|
DBMS_LOCK 사용 시 에러 (0) | 2008.01.10 |
[펌]DECODE 이용사례 (4) - BETWEEN OPERATOR (0) | 2008.01.09 |
[펌]DECODE를 이용하여 원치 않는 자료를 없애는 방법 (0) | 2008.01.09 |
[펌]DECODE 이용사례 : RANGE에 따른 값으로 DECODE FUNCTION 이용하기 (0) | 2008.01.09 |
DBMS_LOCK 사용 시 에러 (0) | 2008.01.10 |
---|---|
[펌]SQL*plus FAQ 및 TIPS (0) | 2008.01.09 |
[펌]DECODE를 이용하여 원치 않는 자료를 없애는 방법 (0) | 2008.01.09 |
[펌]DECODE 이용사례 : RANGE에 따른 값으로 DECODE FUNCTION 이용하기 (0) | 2008.01.09 |
[펌]TABLE의 RECORD 건수를 확인하는 방법 (0) | 2008.01.09 |