2017-10-12 10 views
2

Toad for Oracle에서 스크립트를 실행하고 있습니다. 나는 스크립트를 실행하는 두 가지 옵션이 있습니다스크립트로 실행하면 모든 필드가 VARCHAR2의 데이터 유형이된다는 의미입니까?

단축키를 F9 : 실행 문
단축키 F5 : 스크립트로 실행

"정책을 실행"내가 기대하는 데이터 유형 내 필드를 반환합니다 (예 : NUMBER 필드가 NUMBER 필드로 출력 됨).

그러나 "스크립트로 실행"은 VARCHAR2 데이터 형식의 모든 필드를 반환합니다. 확실히 NUMBER 데이터 유형 인 필드조차 VARCHAR2로 끝납니다. 말 그대로 F9와 F5를 사용하여 동일한 스크립트를 실행하여 다른 데이터 유형을 반환하는지 확인할 수 있습니다.

제 첫 질문은 의도 한대로 작동하는지 여부입니다. 그리고 의도한다면, 두 번째 질문은 "스크립트로 실행"을 사용할 때 모든 데이터 유형이 VARCHAR2가되는 것을 피할 수있는 방법입니다. 바인드 변수를 사용하기 때문에 "스크립트로 실행"을 사용해야합니다.

편집 : 예를 들어,이 같은 테이블이 있다면 :

TBL_PAID_DATA 

╔══════════╦══════════╗ 
║ employee ║ paid_amt ║ 
╠══════════╬══════════╣ 
║ Sam  ║  1500 ║ 
║ Sam  ║  200 ║ 
║ Sam  ║  150 ║ 
║ Lisa  ║  500 ║ 
║ Lisa  ║  430 ║ 
║ Bart  ║  700 ║ 
║ Donald ║  840 ║ 
╚══════════╩══════════╝ 

을 그리고이 같은 스크립트했다 : VARCHAR2로

SELECT employee, sum(paid_amt) 
FROM TBL_PAID_DATA 
GROUP BY employee 

그런 다음 직원 필드 반송을 모두 내가 "실행하는 경우 스크립트로 "및"실행 문 "을 선택하십시오. 그러나 sum (paid_amt)은 내가 "스크립트로 실행"할 때 VARCHAR2로 반환하고 "명령문을 실행할 때"NUMBER로 반환합니다. 나는 sum (paid_amt)이 항상 NUMBER 데이터 유형으로 리턴 할 것으로 예상했다.

+0

"모든 필드를 반환"한다는 것은 무엇을 의미합니까? 당신의 스크립트는 무엇을하고 있습니까? (dbms_output? 데이터베이스에 삽입 하시겠습니까?) 코드를 보여줄 수 있습니까? – tbone

+2

추측 - "Execute Statement"는 결과 집합을 Toad로 반환하며, Toad는 자체 형식을 사용하여 UI에 표시합니다. SQL/Plus 스타일 환경에서 "스크립트로 실행"이 실행되고 있으며 Oracle은 출력을 포맷하고 콘솔 출력을 문자열로 반환합니다. – MT0

+2

스크립트로 실행할 때 쿼리하기 전에 [column formatting directive] (https://docs.oracle.com/cd/B19306_01/server.102/b14357/ch6.htm)를 추가하면 어떻게됩니까? 'SALARY' 컬럼이 있다면'COLUMN SALARY FORMAT $ 99,990.00' 쿼리 전에이 라인에 넣고 출력을 변경하는지 확인하십시오. – MT0

답변

2

F5 결과가 sqlplus에서 텍스트로 수집되므로 스크립트로 실행됩니다.

결과를 텍스트 파일에 복사/붙여 넣기하고 Open-office Calc와 같은 csv 가져 오기 도구를 사용하여 데이터를 숫자로 변환하고 추가 계산을 할 수 있습니다.

+1

이 응답을 보내 주셔서 감사합니다. 한 가지 편집 참고 사항 : 나는 F5를 의미한다고 생각합니다. 방금 귀하의 제안을 시도하고 그것이 작동하는지 확인할 수 있습니다. 출력을 탭으로 구분 된 .txt 파일로 내보내고 Excel의 가져 오기 txt 마법사를 사용했습니다. 이것은 해결책이지만, 희망만큼 우아하지는 않습니다. Toad에서 데이터를 내보낼 때마다 Excel에서 약간의 수동 단계를 수행하지 않고이 문제를 해결할 수 있기를 희망했습니다. 나는 다른 누군가가 다른 아이디어를 가지고 있는지보기 위해 잠시 기다릴 것이지만, 나는 곧 볼 수 없다면 대답으로 당신의 것을 받아 들일 것입니다. – LetEpsilonBeLessThanZero