Oracle соединение в SAS - PullRequest
       12

Oracle соединение в SAS

0 голосов
/ 09 августа 2011

Я использую этот код подключения оракула в SAS и получаю эту ошибку:

ORACLE prepare error: ORA-06553: PLS-306: wrong number or types of arguments in call to 'get_pat_fix';

мой код выглядит так:

proc sql;
 connect to oracle(user='XXXXX'orapw='XXXXXX'path='');

  create table work.XXX as select * from connection to oracle (

        select to_char(yy.XXXX) as XXXXXX,
substr(get_pat_fix ('XX', yy.XXXX , 'XX','XX'),1,5)   XXXX,
from XXX;

Я пытался изменить его несколько раз, но не смог исправить это. Я был бы очень признателен за вашу помощь относительно того же.

1 Ответ

0 голосов
/ 10 августа 2011

"Я не понял объяснение функции get_pat_fix."

Просмотрите функцию в IDE, например, TOAD или SQL Developer, или опишите ее в SQL * Plus следующим образом:

SQL> desc validate_salary
FUNCTION validate_salary RETURNS VARCHAR2
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_CURRENT_SAL                  NUMBER                  IN
 P_RAISE_PCT                    NUMBER                  IN
 P_JOB                          VARCHAR2                IN
 P_HIREDATE                     DATE                    IN
 P_DEPTNO                       NUMBER                  IN     DEFAULT

SQL>

Показывает число и тип данных параметров. Мы должны передать значения для каждого параметра, который не имеет значения по умолчанию, и мы должны передать переменную для любого параметра OUT или IN OUT. Переданные значения должны соответствовать типу данных параметра.

Параметры могут быть переданы по позиции ...

SQL> select validate_salary (4000, 10, 'MGR', sysdate-720)
  2  from dual
  3  /

VALIDATE_SALARY(4000,10,'MGR',SYSDATE-720)
--------------------------------------------------------------
okay

SQL>

... или по именному обозначению ...

SQL> select validate_salary (p_current_sal=> e.sal
  2                              , p_hiredate=> e.hiredate
  3                              , p_deptno => e.deptno
  4                              , p_job => e.job
  5                              , p_raise_pct=> 10 )
  6  from emp e
  7  /

VALIDATE_SALARY(P_CURRENT_SAL=>E.SAL,P_HIREDATE=>E.HIREDATE,P_DEPTNO=>E.DEPTNO,P
--------------------------------------------------------------------------------
okay
okay
okay  
...

В любом случае параметры должны совпадать:

SQL> select validate_salary (4000, 10, 'MGR')
  2  from dual
  3  /
select validate_salary (4000, 10, 'MGR')
       *
ERROR at line 1:
ORA-06553: PLS-306: wrong number or types of arguments in call to
'VALIDATE_SALARY'

SQL> select validate_salary (4000, 'MGR', sysdate-720, 40)
  2  from dual
  3  /
select validate_salary (4000, 'MGR', sysdate-720, 40)
       *
ERROR at line 1:
ORA-06553: PLS-306: wrong number or types of arguments in call to
'VALIDATE_SALARY'


SQL> 

Конечно, я упустил самый очевидный ответ: обратитесь к документации вашего приложения, в которой будет подробное описание функции GET_PAT_FIX (), включая ее подпись. :-D Извините, подумал, что я мог бы оставаться невозмутимым, пока я это печатал.

Увы, в реальном мире слишком многим из нас приходится бороться без достойной документации для наших приложений. Таким образом, мы должны опросить схему базы данных. Я не думаю, что для этого есть какие-либо инструменты SAS (, которые Google подбрасывает , похоже, просто браузеры данных). Так что это означает, что вам понадобится инструмент базы данных. Я собираюсь предложить SQL Developer для Oracle не потому, что он лучший (это дело вкуса), а потому, что он бесплатный и работает. Найдите это здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...