저는 매달 수입이 포함 된 테이블을 만들고 있습니다.
이를 위해 내부에 삽입 문이있는 for 루프를 사용하고 있습니다.
내가 문제가있는 것은 숫자를 한 달로 변환 한 다음 문자로 변환하는 것입니다.
내 코드는 다음과 같습니다.
BEGIN
FOR i IN 1..12
LOOP
INSERT INTO REVENUE ( TO_CHAR(TO_DATE(i, 'MM'), 'MON') || '2009'
, select sum(transaction_amount)
하지만 이것을 실행하면 다음과 같은 오류가 발생합니다.
INSERT INTO REVENUE ( TO_CHAR(TO_DATE(i, 'MM'), 'MON') || '2009'
*
ERROR at line 4:
ORA-06550: line 4, column 31:
PL/SQL: ORA-00917: missing comma
내가 여기서 뭘 잘못하고 있니?
go-oleg가 옳습니다. 문제는 연결이 아니라 당신 syntax for the insert statement
이 틀렸다는 것입니다. values
values 절에서 키워드 가 누락되었습니다 .
BEGIN
FOR i IN 1..12
LOOP
INSERT INTO REVENUE VALUES ( TO_CHAR(TO_DATE(i, 'MM'), 'MON') || '2009'
, select sum(transaction_amount)
...
또는 삽입하려는 열 이름을 이상적으로 지정하십시오.
BEGIN
FOR i IN 1..12
LOOP
INSERT INTO REVENUE ( <column1>, <column2> )
VALUES ( TO_CHAR(TO_DATE(i, 'MM'), 'MON') || '2009'
, select sum(transaction_amount)
...
values
키워드 가 없기 때문에 파서는 괄호가 열 목록을 둘러싸고 있다고 생각하므로 다음 여는 괄호를 볼 때 혼란 스럽습니다 to_char
. 오류는 괄호에 대한 것입니다. ma로 시작하면 char 31입니다. 오류 위치를 표시하는 별표가 약간 잘못된 위치에 나타나는 이유를 설명합니다. 열 목록의 구분 기호로 쉼표가 필요합니다. ' to_char
'이 유효한 열 이름 인지 여부를 평가하지 않은 것 같습니다 .
실제로 두 번째 값에 사용하는 선택은 하위 쿼리 버전을 사용하려고 할 수 있음을 나타냅니다. 나머지 성명서에서 수행중인 다른 작업에 따라 다음을 원할 수 있습니다.
BEGIN
FOR i IN 1..12
LOOP
INSERT INTO REVENUE ( <column1>, <column2> )
SELECT TO_CHAR(TO_DATE(i, 'MM'), 'MON') || '2009'
, sum(transaction_amount)
FROM <some other table>
...
루프가 아닌 단일 인서트로 그렇게 할 수 있다고 생각하지만 전체를 보지 않고는 확신하기가 어렵습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다