>  기사  >  데이터 베이스  >  Oracle 저장 프로시저에서 변수에 값을 할당하는 방법은 무엇입니까?

Oracle 저장 프로시저에서 변수에 값을 할당하는 방법은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-25 16:57:0820863검색

변수에 값을 할당하는 방법: 1. ":="를 사용하여 값을 직접 할당하고 구문은 "변수 이름:=값;"입니다. 2. "테이블에서 변수로 테이블 필드 선택"을 사용합니다. 3. "즉시 SQL 문 문자열을 변수로 실행" 문을 사용합니다.

Oracle 저장 프로시저에서 변수에 값을 할당하는 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

Oracle 저장 프로시저 변수 선언 및 값 할당 방법

1. 변수 선언 3가지 방법

데이터 유형의 선언 방법에 따라 구분됨

방법 1: 직접 선언 데이터 유형

형식: 변수 이름 데이터 유형(크기)

V_START_DATE VARCHAR2(19);
v_num number;

 설명:

 문자열 유형으로 설정하면 크기를 지정해야 하며, 그렇지 않으면 오류가 보고됩니다.

  변수는 "begin" 키워드 앞에 만들어져야 합니다.

--错误用法
BEGIN
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';

방법 2: %TYPE 문 사용

형식: 변수 이름 테이블 이름.필드 이름 %TYPE

의미: 변수의 데이터 유형이 지정된 테이블의 지정된 필드의 데이터 유형과 일치합니다.

V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;

방법 3: %ROWTYPE 선언 사용

 형식: 변수 이름 테이블 이름%ROWTYPE

의미: 변수의 데이터 유형이 지정된 테이블의 지정된 행 레코드(모든 필드)의 데이터 유형과 일치합니다

--VIRTUAL_CARD表整行数据
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE; 

 요약:

 저장 프로시저에서 변수를 선언할 때 "DECLARE" 키워드를 사용할 필요가 없습니다.  

  변수는 대소문자를 구분하지 않습니다.

 사용.

2. 3가지 변수 할당

방법 1: 직접 할당, ":="

  사용 조건: 처음 2가지 변수 선언 방법에 적용됩니다.

V_ORGID :=  '110';  

 참고:

 변수 뒤에는 sql 문이 바로 올 수 없습니다. sql은 실행되지 않습니다.

--错误用法
V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;
--正确用法
V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';

 변수 선언과 할당을 함께 할 수 있습니다.

--正确用法
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
BEGIN
 /* 具体业务 */
END;

방법 2: 테이블 필드를 테이블에서 변수로 선택

변형 1: 지정된 테이블의 지정된 필드를 쿼리

사용 조건: 변수 선언의 처음 두 가지 방법에 적용 가능하며

을 사용할 수 있습니다.
--根据医疗机构ID查询对应的父机构的机构序列
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
 WHERE ORGID =
       (SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);

Transformation Two: 지정된 테이블의 모든 필드 쿼리

사용 조건: 변수 선언의 세 번째 방법에만 적용 가능

--将id=5120的VIRTUAL_CARD表数据赋值给变量V_ROW_VIRTUAL_CARD
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;

설명:

쿼리 결과는 하나의 레코드만 반환할 수 있습니다.

쿼리된 테이블 필드는 테이블의 모든 필드여야 합니다.

 오류 예:

--错误举例一:查询的是所有表记录
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--错误举例二:查询的是该表的多个字段
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;  

방법 3: 변수에 즉시 SQL 문 문자열 실행

declare/* 存储过程,不需要声明 */
  v_sql varchar2(100);
  V_ORGSEQ varchar2(100);
begin
  v_sql := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
  --V_ORGSEQ赋值
  execute immediate v_sql INTO V_ORGSEQ;
  --打印结果
  DBMS_OUTPUT.put_line(V_ORGSEQ);
END;

3. 변수 호출

일반적으로 변수에는 할당, 논리적 판단이라는 세 가지 사용 시나리오만 있습니다. , 산술 연산;

 참고: 쿼리 열로 사용할 수 없습니다

--错误调用
select V_ORGSEQ from dual;

 %ROWTYPE을 사용하여 선언된 변수를 호출하는 방법은 무엇입니까?

 "변수명.테이블 필드" 방법을 사용하면 테이블 내 지정된 행(반환 행)의 지정된 열(임의의 열)이 나타내는 데이터를 가져올 수 있습니다.

--V_ROW_VIRTUAL_CARD赋值
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
--调用
DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID);  

추천 튜토리얼: "Oracle Tutorial"

위 내용은 Oracle 저장 프로시저에서 변수에 값을 할당하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.