posted by 지긋이 2020. 12. 10. 16:22

[Error 구문] SQL 오류: ORA-00984: 열을 사용할 수 없습니다
00984. 00000 -  "column not allowed here"

1. 상황 : 파라미터 개수에 맞춰 insert 도중 발생
2. 원인 : varchar2(문자열) 컬럼에 문자열을 입력하지 않음
ex) NVL(UPPER('rosebay'),admin)
=> NVL(UPPER('rosebay'),'admin') or (UPPER('rosebay'),'') 로 변경시 정상 동작
1) insert 문에서 문자열에 작은따옴표(')  누락(문자열 인식)
- 작은따옴표 대신에 큰따옴표를 사용할 경우
2) 오타(함수 이름 등)

2020. 10. 21. 09:25

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

posted by 지긋이 2020. 10. 16. 11:19

프로젝트별 순수 개발자로 있다가 사내 전산팀으로 바꿨더니 할게 참 많아졌다.

그 중 요즘 제일 곤역인것은 다양한 DB... 10년간 오라클만 썼더니 하하;;
기본적인 문법은 다 비슷한데 약간씩 다른게 있었다. 별거아닌것으로 시간 소비했을때의 기분이란.. 

1. 테이블 생성/수정시 DATA TYPE
1) Numeric(p,[s]) : p 소수점 이하 자리수 포함한 총 자릿수, s 소수점 이하 자릿수[생략가능]
cf) 오라클은 Number, Mysql은 int, bigint, tinyint
2) timestamp, date
cf) 오라클은 date, Mysql은 timestamp
3) char, varchar
cf) 오라클은 char(??Byte), varchar2(??Byte), Mysql은 varchar

2. 테이블 복사
select 컬럼명 into new테이블명 from 원본테이블명 where 조건
cf) 오라클은 create table new테이블명 as select * from 원본테이블명

3. 날짜 기본형 : 현재 날짜 시간을 나타내는 명령어
getdate()
cf) 오라클은 sysdate, Mysql은 now()

4. 형타입 변환
1) CAST(필드명 AS 바꿀 타입) 
ex) cast((필드명) as varchar)
2) CONVERT(바꿀 타입(필드명))
ex1) convert(varchar(필드명))
ex2) convert(char(10),getdate(),102) => 2020.10.12
      convert(char(10),getdate(),112) => 20201012
      convert(char(10),getdate(),126) => 2020-10-16

5. 트랜잭션 기본
- 실행내용 보고 최종반영 하기
begin tran
.. 실행문
commit; 혹은 rollback;

6. NULL처리 isNull
오라클에서 흔히 쓰는 nvl은 mssql에서는 존재하지 않는다.
그럼 어떻게? 이렇게 ISNULL(A.aa, ''
ex) select isnull(left('20200226Ae',9),'') aa ,isnull(null,'없어') bb, isnull(left('ABCDEFGdate',6),'') cc

aa          bb cc
20200226A 없어 ABCDEF


7. 기타

MS-SQL은 Oracle과 같은 가상 테이블을 사용하지 않는다.
즉, from 이하를 생략하고 함수 그대로 사용이 가능하다.
ex1) Oracle 현재 시간 구하기
select sysdate() from dual;
ex2) MS-SQL 현재 시간 구하기
select getdate(); 

** 스크립트 작성
declare @변수명 타입
set @변수명 = 변수값

본문 내용