我正在阅读Joe Celko的树和层次结构在SQL中的Smarties (2012),并且遇到了我不熟悉的SQL语法:
SELECT *
FROM Personnel_OrgChart
WHERE path_string LIKE
(SELECT path_string
FROM Personnel_OrgChart
WHERE emp_id = :parent_emp_id)
| | ‘%’;
查询的目标是选择父级的下级。引用表Personnel_OrgChart
的结构是:
+----------+--------+-------------+
| emp_name | emp_id | path_string |
+----------+--------+-------------+
| Bonnie | A | A |
+----------+--------+-------------+
对于完整的上下文,引用的解释是:
子查询将使用emp_id列上的索引来查找 路径字符串的“前部”从根到父与谁 我们很担心。 (第37页)。
什么是:
,是否与表中未找到parent_emp_id
有关? parent_emp_id
来自哪里?
答案 0 :(得分:6)
如果您的意思是Oracle,它是bind variable
,您可以在documentation中详细了解它。基本上它只是输入变量的占位符。
例如,给定INSERT
语句
INSERT INTO emp VALUES
(:empno, :ename, :job, :sal, :deptno)
以及以下变量声明
text *ename, *job;
sword empno, sal, deptno;
答案 1 :(得分:3)
这是主变量
DB2上的COBOL示例
MOVE '000110' TO EMPID.
EXEC SQL
SELECT LASTNAME
INTO :PGM-LASTNAME
FROM CORPDATA.EMPLOYEE
WHERE EMPNO = :EMPID
END-EXEC.
DISPLAY "Employee name is " PGM-LASTNAME