select into 時有無strict關鍵字的區別
SELECT select_expressions INTO [STRICT] target FROM ...;
SELECT * INTO myrec FROM emp WHERE empname = myname;IF NOT FOUND THEN RAISE EXCEPTION 'employee % not found', myname;END IF;
BEGIN SELECT * INTO STRICT myrec FROM emp WHERE empname = myname; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'employee % not found', myname; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'employee % not unique', myname;END;
create table strict_test_tb (id int,content varchar);create or replace function test_no_strict() returns varchar as $$ declare param1 strict_test_tb%rowtype; begin begin select * into param1 from strict_test_tb; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'param1 % not found', '1'; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'param1 % not unique', '2'; when others then RAISE exception 'other unkown exception'; end; RAISE notice 'param1 is %',param1; return null;end; $$ language plpgsql; create or replace function test_has_strict() returns varchar as $$ declare param1 strict_test_tb%rowtype;begin begin select * into strict param1 from strict_test_tb; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'param1 % not found', '1'; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'param1 % not unique', '2'; end; raise notice 'param1 is %',param1; return null;end;$$ language plpgsql;
highgo=# select * from strict_test_tb; id | content ----+---------(0 rows)highgo=# select test_no_strict();NOTICE: param1 is (,) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();ERROR: param1 1 not found CONTEXT: PL/pgSQL function test_has_strict() line 10 at RAISE
highgo=# select test_no_strict();NOTICE: param1 is (1,1) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();NOTICE: param1 is (1,1) test_has_strict -----------------(1 row)
highgo=# select test_no_strict();NOTICE: param1 is (1,1) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();ERROR: param1 2 not unique CONTEXT: PL/pgSQL function test_has_strict() line 12 at RAISE
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2885541/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- out關鍵字和ref關鍵字的區別
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序
- final與static關鍵字的區別?(skycto JEEditor)
- 使用關聯模型的鏈式呼叫時-有無括號的區別模型
- Go 語言 new 和 make 關鍵字的區別Go
- 【學習筆記】make 和 new 關鍵字的區別筆記
- #define巨集與列舉以及typedef關鍵字的區別
- golang關鍵字select的三個例子, time.After模擬socket/心跳超時Golang
- select * 和 select 所有欄位的區別
- 區塊鏈關鍵字的解析區塊鏈
- Python3 關鍵字nonlocal和global的用法與區別Python
- C語言include關鍵字和引用.h .c的區別C語言
- Volatile關鍵字&&DCL單例模式,volatile 和 synchronized 的區別單例模式synchronized
- select into from 和 insert into select 的用法和區別
- C語言中的關鍵字有哪些,分別代表什麼意思C語言
- C語言 關鍵字const的作用 const int* 和int *const 的區別C語言
- 識別符號與關鍵字符號
- 預設引數和關鍵字參數列面上最大的區別是?
- const關鍵字在C與C++中修飾變數的區別C++變數
- python3的關鍵字有什麼Python
- select、poll、epoll之間的區別
- DM 關鍵字、遮蔽關鍵字
- Rust 有問有答之 use 關鍵字Rust
- 關鍵字、資料型別、識別符號資料型別符號
- let關鍵字和const關鍵字
- final關鍵字和static關鍵字
- JavaSE 關鍵字和識別符號Java符號
- HashTable、ConcurrentHashMap、TreeMap、HashMap關於鍵值的區別HashMap
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 關鍵字
- this關鍵字
- PyChram社群版和商用版有何區別?這幾點很關鍵!
- Go語言的識別符號、關鍵字、字面量、型別Go符號型別
- java:識別符號 關鍵字 變數Java符號變數
- Java 中 final 關鍵字有什麼用Java
- 如何理解自動化測試資料驅動與關鍵字驅動的區別?
- 伺服器IO多路複用的select和poll的區別以及監聽套接字select函式的四個宏操作伺服器函式