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關鍵字語句執行順序
- Go 語言 new 和 make 關鍵字的區別Go
- iOS開發中各種關鍵字的區別iOS
- 【學習筆記】make 和 new 關鍵字的區別筆記
- final與static關鍵字的區別?(skycto JEEditor)
- #define巨集與列舉以及typedef關鍵字的區別
- SQL Server 和 MySql 語法和關鍵字的區別ServerMySql
- 區塊鏈關鍵字的解析區塊鏈
- 關於mssql中go等幾個關鍵字的用途及區別SQLGo
- C語言include關鍵字和引用.h .c的區別C語言
- golang關鍵字select的三個例子, time.After模擬socket/心跳超時Golang
- Python3 關鍵字nonlocal和global的用法與區別Python
- C語言中的關鍵字有哪些,分別代表什麼意思C語言
- Volatile關鍵字&&DCL單例模式,volatile 和 synchronized 的區別單例模式synchronized
- Rust 有問有答之 use 關鍵字Rust
- 識別符號與關鍵字符號
- select * 和 select 所有欄位的區別
- select count(*)和select count(1)的區別
- 預設引數和關鍵字參數列面上最大的區別是?
- Java異常機制關鍵字總結,及throws 和 throw 的區別Java
- Ask Hoegh(4)——select count(*)和select count(1)、count(column)有區別嗎?
- python3的關鍵字有什麼Python
- 關鍵字、資料型別、識別符號資料型別符號
- JavaSE 關鍵字和識別符號Java符號
- 有狀態和無狀態的區別
- const關鍵字在C與C++中修飾變數的區別C++變數
- insert into 與 select into 的區別
- javascript的this關鍵字JavaScript
- this關鍵字
- 關鍵字
- 【fk_index】外來鍵中有無索引的區別Index索引
- select into from 和 insert into select 的用法和區別
- C語言 關鍵字const的作用 const int* 和int *const 的區別C語言
- PyChram社群版和商用版有何區別?這幾點很關鍵!
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python