[DM] 다몽 데이터베이스에 있는 패키지 실례
15702 단어 데이터베이스
테스트 세트 만들기
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(
ID INT IDENTITY(1,1),
NAME VARCHAR(50),
CITY VARCHAR(50)
);
INSERT INTO TEST(NAME,CITY) VALUES(' ',' '),(' ',' '),(' ',' ');
패키지 사양 작성
CREATE OR REPLACE PACKAGE PERSON AS --
NOPERSON EXCEPTION; --
PERSONCOUNT INT; --
CSR CURSOR; --
PROCEDURE ADDPERSON(NAME VARCHAR(50),CITY VARCHAR(50)); --
PROCEDURE REMOVEPERSON(V_NAME VARCHAR(50),V_CITY VARCHAR(50)); --
PROCEDURE REMOVEPERSON(V_ID INT); -- 、
FUNCTION GETPERSONCOUNT RETURN INT; -- ,
PROCEDURE GETPERSONLIST; --
END PERSON; --
패키지 바디 생성하기
CREATE OR REPLACE PACKAGE BODY PERSON AS
PROCEDURE ADDPERSON(NAME VARCHAR(50),CITY VARCHAR(50)) AS
BEGIN
INSERT INTO TEST(NAME,CITY) VALUES(NAME,CITY);
PERSONCOUNT=PERSONCOUNT+SQL%ROWCOUNT;
END ADDPERSON;
PROCEDURE REMOVEPERSON(V_NAME VARCHAR(50),V_CITY VARCHAR(50)) AS
BEGIN
DELETE FROM TEST WHERE NAME LIKE V_NAME AND CITY LIKE V_CITY;
PERSONCOUNT=PERSONCOUNT-SQL%ROWCOUNT;
END REMOVEPERSON;
PROCEDURE REMOVEPERSON(V_ID INT) AS
BEGIN
DELETE FROM TEST WHERE ID=V_ID;
PERSONCOUNT=PERSONCOUNT-SQL%ROWCOUNT;
END REMOVEPERSON;
FUNCTION GETPERSONCOUNT RETURN INT AS
BEGIN
RETURN PERSONCOUNT;
END GETPERSONCOUNT;
PROCEDURE GETPERSONLIST AS
DECLARE
V_ID INT;
V_NAME VARCHAR(50);
V_CITY VARCHAR(50);
BEGIN
IF PERSONCOUNT=0 THEN
RAISE NOPERSON;
END IF;
OPEN CSR FOR SELECT ID,NAME,CITY FROM TEST;
LOOP
FETCH CSR INTO V_ID,V_NAME,V_CITY;
EXIT WHEN CSR%NOTFOUND;
PRINT (CAST(V_ID AS VARCHAR(50))||' '||V_NAME||', '||V_CITY);
END LOOP;
CLOSE CSR;
END GETPERSONLIST;
BEGIN
SELECT COUNT(*) INTO PERSONCOUNT FROM TEST;
END PERSON
패키지 다시 컴파일
ALTER PACKAGE PERSON COMPILE;
패키지의 ADDPERSON 프로세스를 호출하고 테이블에 기록을 추가합니다
SQL> CALL PERSON.ADDPERSON(' ',' ');
DMSQL
: 1.963( ). :1925.
SQL> SELECT * FROM TEST;
ID NAME CITY
---------- ----------- ---- ----
1 1
2 2
3 3
4 4
: 0.412( ). :1926.
SQL>
REMOVEPERSON 프로세스를 호출하여 방금 추가한 레코드를 삭제합니다.
SQL> CALL PERSON.REMOVEPERSON(' ',' ');
DMSQL
: 13.914( ). :1979.
SQL> SELECT * FROM TEST;
ID NAME CITY
---------- ----------- ---- ----
1 1
2 2
3 3
: 0.159( ). :1980.
REMOVEPERSON 프로세스 재부팅, 예를 들어 전송 ID가 로운을 삭제함
SQL> CALL PERSON.REMOVEPERSON(3);
DMSQL
: 49.736( ). :1989.
SQL> SELECT * FROM TEST;
ID NAME CITY
---------- ----------- ---- ----
1 1
2 2
: 0.342( ). :1990.
패키지의 변수를 인용하여 총 인원수를 얻습니다
SQL> SELECT PERSON.PERSONCOUNT;
PERSON.PERSONCOUNT
---------- ------------------
1 2
: 0.867( ). :1991.
패키지의 함수를 호출하여 총 인원수를 얻습니다
SQL> SELECT PERSON.GETPERSONCOUNT;
GETPERSONCOUNT
---------- --------------
1 2
: 0.623( ). :1992.
GETPERSONLIST 프로세스를 호출하여 테이블의 세부내용 보기
SQL> CALL PERSON.GETPERSONLIST;
1 ,
2 ,
DMSQL
: 0.290( ). :1995.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.