스펙에서 벗어나려면 PostgreSQL 9.2를 사용하고 PgAdmin3을 통해 데이터베이스를 사용하고 테이블의 형식을 셰이프 파일로 사용하십시오. 추가 세부 사항이 필요한 경우 편집하고 제공합니다.저장 프로 시저에 객체 (테이블 또는 컬럼) 이름을 전달하는 방법
필자는 기본적으로 다른 열의 문자열 값이 null인지 여부에 따라 정수 값 열에서 정수 값을 업데이트하려고합니다. 결국 jdbc를 사용하여 Java 응용 프로그램에서 실행되도록 저장된 함수를 이식하려고하지만 먼저 pgadmin3 내에서 함수를 테스트하고 싶습니다. postgresql에 대한 경험이 거의 없으며 구문에 약간의 오류가 있습니다.
필자가 필요로하는 아이디어와 여기에 넣을 매개 변수는 name, argmode, argname, argtype, column_name 및 lang_name입니다.
아무 것도 반환하지 않으면 RETURNS void를 $$로 포함 시키거나 단순히 return 문을 포함하지 않을 수 있음을 이해합니다. 나는 결과 집합이 필요하다고 생각하지 않는다. 단지 정수 값을 한 열로 대체하기를 원한다. 처리하려는 열을 전달하기 위해 필요한 테이블을 참조하는 방법을 잘 모르겠습니다.
CREATE [OR REPLACE] FUNCTION handle_malformed([[VARIADIC][]
table_name.column_name, table_name.column_name, table_name.column_name, table_name.column_name, table_name.column_name, table_name.column_name, table_name.column_name, table_name.column_name])
BEGIN
LOOP
IF NAME_1 IS NULL THEN
IF LEVEL_DEPT != 0 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 0;
ELSE IF NAME_2 IS NULL THEN
IF LEVEL_DEPT != 1 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 1;
ELSE IF NAME_3 IS NULL THEN
IF LEVEL_DEPT != 2 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 2;
ELSE IF NAME_4 IS NULL THEN
IF LEVEL_DEPT != 3 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 3;
ELSE IF NAME_5 IS NULL THEN
IF LEVEL_DEPT != 4 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 4;
ELSE
IF LEVEL_DEPT !=5 THEN
UPDATE AdminBoundaries SET \"LEVEL_DEPT\" = 5;
EXCEPTION
END LOOP;
END PROCEDURE;
$$ LANGUAGE plpgsql;
update handle_malformed(AdminBoundaries.NAME_5, AdminBoundaries.NAME_4, AdminBoundaries.NAME_3,
AdminBoundaries.NAME_2, AdminBoundaries.NAME_1, AdminBoundaries.NAME_0, AdminBoundaries.WIKI_URL, AdminBoundaries.LEVEL_DEPT)
I가 넣어 논리 I는 I 달성 할 로직 루프 및 종료 루프 사이에 넣어 로직 : 여기
제가 지금까지 함께 자갈길 한 코드이다.제 질문은 SQL의 인수에서 열 이름을 어떻게 사용합니까?
무엇이 문제입니까? – Eelke
나는 질문을 편집했다. 감사. – J10598
대문자로 된 식별자는 열 이름으로 간주됩니까? 왜 당신은 그 논쟁을 열 번 반복합니까? 인수의 의도는 무엇입니까? 함수는 인수를 사용하지 않는 것으로 보입니까? – wildplasser