"%Type"在Oracle sql中的含义是什么?

Mat*_*t M 34 sql oracle plsql

我第一次体验Oracle和TOAD(我知道SSMS).我在更新过程中的输入参数旁边遇到了这个"%Type",我不知道它是什么或它意味着什么.我在Google上找到了与"%Rowtype"相关的链接.是同一件事还是完全不同的事情?

如果这很模糊,我道歉.一如既往,感谢您的帮助.

OMG*_*ies 56

Oracle(和PostgreSQL)有:

  • %类型
  • %ROWTYPE

%类型

%TYPE 用于声明与现有表中列的数据类型相关的变量:

DECLARE v_id ORDERS.ORDER_ID%TYPE
Run Code Online (Sandbox Code Playgroud)

这样做的好处是,如果数据类型发生变化,则变量数据类型保持同步.

参考:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/fundamentals.htm#i6080

%ROWTYPE

这在游标中用于声明单个变量以包含来自游标或表的结果集的单个记录,而无需指定单个变量(及其数据类型).例如:

DECLARE
  CURSOR c1 IS
     SELECT last_name, salary, hire_date, job_id 
       FROM employees 
      WHERE employee_id = 120;

  -- declare record variable that represents a row fetched from the employees table
  employee_rec c1%ROWTYPE; 

BEGIN
 -- open the explicit cursor and use it to fetch data into employee_rec
 OPEN c1;
 FETCH c1 INTO employee_rec;
 DBMS_OUTPUT.PUT_LINE('Employee name: ' || employee_rec.last_name);
END;
/
Run Code Online (Sandbox Code Playgroud)

  • %rowtype也可以与表一起使用,如declare v_emp\temp%rowtype; 从emp开始select*into v_emp,其中rownum = 1; 结束; (3认同)