2013-02-20 4 views
0

Oracle 데이터베이스의 데이터베이스 테이블 소유자와 사용자에 대해 별도의 사용자가있는 데이터베이스 설정이 있습니다. 이것은 실제로 각 쿼리는 다음과 같이 접두사 것을 의미한다 : 문제는소유자/스키마 이름 접두사가있는 Scala의 Slick sql 보간 사용 방법

(sql"select foo_owner.foo_sequence.nextval from dual").as[Long].first() 

을 것을 : 난 그냥 슬릭의 SQLInterpolation.sql 기능에 정적으로 전체를 쓰는 경우는 잘 작동

ownername.tablename 소유자 접두사는 test/prod에 따라 변경됩니다. 환경. 내가 뭘하고 싶은 :

(sql"select $owner.foo_sequence.nextval from dual").as[Long].first() 

하지만 SQL 보간 작동하지 않습니다. 이 오류가 발생합니다. 오라클 :

An exception or error caused a run to abort: ORA-22806: not an object or REF 

어떤 제안이 있습니까? 물론 자세한 StaticQuery로 돌아갈 수는 있지만 SQL/sqlu 보간을 사용하면 훨씬 더 간단 해집니다.

+0

참고 : 당신은 문자를 삽입 할 #와 접두사해야합니다. 매끄러운 확장 라이센스를 참조하십시오. – JasonG

답변

0

접두사를 제거해도됩니까? 귀하의 코드에서 실행할 수 있습니다
ALTER SESSION SET CURRENT_SCHEMA=yourOwner

이렇게하면 SQL에 접두어를 붙일 필요가 없습니다. CREATE TABLE이나 다른 DML이 소유자의 스키마에서 실행되도록 시도하지 않도록하십시오.

3

$foo을 사용하면 foo를 바인드 변수로 삽입합니다. 프로덕션 환경에서 오라클과 슬릭 사용하는 경우 높은 비용이 있음을

(sql"select #$owner.foo_sequence.nextval from dual").as[Long].first() 
+0

대단히 고마워요! – auramo