제한되어야하는 VARCHAR 인수와 함께 PL/pgSQL 함수를 작성하려고합니다.PL/pgSQL 함수 (VARCHAR를 매개 변수로 사용)
CREATE OR REPLACE FUNCTION do_nothin(v_value VARCHAR(5))
RETURNS TEXT AS
$$
DECLARE
BEGIN
RETURN v_value;
END;
$$
LANGUAGE plpgsql;
이 작품은 내가 텍스트보다 더 큰 5이 함수를 호출 할 때, 그것은 않습니다 :
DO $$
DECLARE
BEGIN
PERFORM do_nothin('123456');
END;
$$
그것은 나를을 제공합니다 (5 개) 문자의 크기로 제한된 VARCHAR 매개 변수, 함수를 다음 고려 결과 '123456',하지만 왜? 이것은 나에게 오류를 줄 것이다?
내가 정의하는 경우이 같은 VARCHAR : 그것은 나에게 예상대로 오류 제공
DO $$
DECLARE
v_mytext VARCHAR(5);
BEGIN
v_mytext := '123456';
END;
$$
: 나는 함수에 대한 너무 큰 논쟁이있을 때 발생이 오류를 원하는
ERROR: value too long for type character varying(5) CONTEXT: PL/pgSQL function inline_code_block line 5 at assignment SQL state: 22001
을, 하지만 어떻게?