PL/SQL中的查询语句主要使用`SELECT`语句来从数据库表中检索数据。以下是一些基本的PL/SQL查询语句示例:
选择所有列:
```sql
SELECT * FROM employees;
```
选择部分列并指定显示次序:
```sql
SELECT first_name, last_name, salary FROM employees;
```
使用`WHERE`子句设置查询条件:
```sql
SELECT * FROM employees WHERE salary > 50000;
```
限制返回的行数:
```sql
SELECT * FROM employees LIMIT 10;
```
```sql
DECLARE
v_first_name employees.first_name%TYPE;
v_last_name employees.last_name%TYPE;
v_salary employees.salary%TYPE;
BEGIN
FOR emp_rec IN (SELECT first_name, last_name, salary FROM employees) LOOP
v_first_name := emp_rec.first_name;
v_last_name := emp_rec.last_name;
v_salary := emp_rec.salary;
DBMS_OUTPUT.PUT_LINE('员工姓名: ' || v_first_name || ' ' || v_last_name || ', 薪水: ' || v_salary);
END LOOP;
END;
```
内连接:
```sql
SELECT a.column1, b.column2
FROM table1 a
JOIN table2 b ON a.column1 = b.column1;
```
外连接(左外连接):
```sql
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b ON a.column1 = b.column1;
```
全外连接:
```sql
SELECT a.column1, b.column2
FROM table1 a
FULL OUTER JOIN table2 b ON a.column1 = b.column1;
```
交叉连接:
```sql
SELECT a.column1, b.column2
FROM table1 a, table2 b;
```
```sql
DECLARE
v_sql VARCHAR2(200);
v_result NUMBER;
BEGIN
v_sql := 'SELECT COUNT(*) FROM employees WHERE department_id = :dept_id';
EXECUTE IMMEDIATE v_sql INTO v_result USING 10;
DBMS_OUTPUT.PUT_LINE('Number of employees in department 10: ' || v_result);
END;
```
使用`DESC`命令:
```sql
DESC table_name;
```
使用`USER_TAB_COLUMNS`视图:
```sql
SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns
WHERE table_name = 'your_table_name';
```
这些示例展示了PL/SQL中查询语句的基本用法,包括选择列、设置条件、限制行数、使用游标、联合查询、动态SQL以及查看表结构等。根据具体需求,可以灵活运用这些查询语句来满足不同的数据检索任务。