모든 데이터를 대문자로 삽입해야합니다. Oracle 데이터베이스를 사용하고 있으며 작업을 수행 할 수있는 방아쇠를 썼습니다. 문제는 다음과 같은 사실을 알지 못한다는 것입니다.대문자로 삽입하기 전에 행
이것은 내 코드입니다.
CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT OR UPDATE ON MY_TABLE
FOR EACH ROW
DECLARE
CURSOR fields IS
SELECT COLUMN_NAME FROM user_tab_columns WHERE table_name='MY_TABLE';
field user_tab_columns%ROWTYPE;
BEGIN
FOR field IN fields LOOP
DECLARE
theField VARCHAR2(100) := field.COLUMN_NAME;
newValue NVARCHAR2(1000) := :NEW."MY_FIELD";
BEGIN
:NEW."MY_FIELD" := UPPER(nValor);
END;
END LOOP;
END;
/
"MY_FIELD"필드와 작동하지만 대신 "myField"변수를 사용해야합니다. 그런 식으로 테이블의 모든 필드를 바꿀 수 있다고 생각합니다.
누군가가 저를 도울 수 있거나, 저에게 다른 방법을 제안 할 수 있기를 바랍니다.
감사합니다.
나는 그렇게 할 방법을 모른다. 테이블에있는 모든 열 이름을 이미 알지 못합니까? 처리 할 것으로 예상되는 기간 당 삽입 횟수는 확실하지 않지만 반복적으로 데이터 사전을 읽는 것은 그리 적합하지 않습니다. 나는 방아쇠의 큰 팬이 아니다. 그들은 목적이 있습니다. 이것은 하나 일 수 있습니다. 호출 응용 프로그램에서 insert 문에 "upper"함수를 호출 할 수없는 이유는 무엇입니까? – OldProgrammer
답장을 보내 주셔서 감사합니다. 열 이름을 알고, 문제는 테이블이 많이 있다는 것입니다. 게다가, 같은 데이터베이스를 사용하는 많은 응용 프로그램이 있기 때문에 나는 응용 프로그램을 수정할 수 없습니다. 그리고 그들 중 두 개가 alredy를 준수했습니다. – miguemx
그런 다음 PL/SQL 스크립트를 작성하여 테이블에 의해 구동되는 트리거 코드를 작성하십시오. – OldProgrammer