1. IF 语句:
IF condition THEN
-- 执行逻辑
ELSIF condition THEN
-- 可选的其他条件
ELSE
-- 如果没有条件满足时的逻辑
END IF;
示例:
IF x > 0 THEN
RAISE NOTICE 'x is positive.';
ELSIF x < 0 THEN
RAISE NOTICE 'x is negative.';
ELSE
RAISE NOTICE 'x is zero.';
END IF;
2. CASE 语句:
CASE
WHEN condition1 THEN
-- 逻辑1
WHEN condition2 THEN
-- 逻辑2
ELSE
-- 默认逻辑
END CASE;
示例:
CASE
WHEN x > 0 THEN
RAISE NOTICE 'x is positive.';
WHEN x < 0 THEN
RAISE NOTICE 'x is negative.';
ELSE
RAISE NOTICE 'x is zero.';
END CASE;
3. FOR 循环:
FOR variable IN start_value..end_value LOOP
-- 循环体
END LOOP;
示例:
FOR i IN 1..5 LOOP
RAISE NOTICE 'Iteration: %', i;
END LOOP;
4. WHILE 循环:
WHILE condition LOOP
-- 循环体
END LOOP;
示例:
DECLARE
i INT := 1;
BEGIN
WHILE i <= 5 LOOP
RAISE NOTICE 'Iteration: %', i;
i := i + 1;
END LOOP;
END;
5. LOOP 循环:
LOOP
-- 循环体
EXIT WHEN condition; -- 可选的退出条件
END LOOP;
示例:
DECLARE
i INT := 1;
BEGIN
LOOP
RAISE NOTICE 'Iteration: %', i;
i := i + 1;
EXIT WHEN i > 5;
END LOOP;
END;
6. EXCEPTION 处理:
BEGIN
-- 可能引发异常的逻辑
EXCEPTION
WHEN division_by_zero THEN
-- 处理特定异常
RAISE NOTICE 'Error: Division by zero.';
WHEN others THEN
-- 处理其他异常
RAISE NOTICE 'An error occurred.';
END;
以上是一些基本的 PL/pgSQL 控制结构示例。这些结构允许在存储过程、函数或触发器中执行有条件的、重复的或异常处理的逻辑。具体使用取决于业务需求和程序逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/8509/PostgreSQL