Oracle
 sql >> база данни >  >> RDS >> Oracle

Какъв тип данни трябва да обвържа като параметър на заявката, който да използвам с колона NUMBER(15) в Oracle ODBC?

Моето лично предпочитание е да направя променливите за обвързване символни низове (VARCHAR2) и да оставя на Oracle да направи преобразуването от знак в свой собствен формат за вътрешно съхранение. Достатъчно лесно е (на C) да получите стойности на данни, представени като низове с нулев край, в приемлив формат.

Така че, вместо да пишете SQL така:

SET MY_NUMBER_COL = :b1
  , MY_DATE_COL = :b2

Пиша SQL така:

SET MY_NUMBER_COL = TO_NUMBER( :b1 )
  , MY_DATE_COL   = TO_DATE( :b2 , 'YYYY-MM-DD HH24:MI:SS')

и предоставя символни низове като свързващи променливи.

Този подход има няколко предимства.

Едната е, че заобикаля проблемите и грешките, които човек среща при обвързването на други типове данни.

Друго предимство е, че стойностите на свързване са по-лесни за дешифриране при проследяване на събитие 10046 на Oracle.

Освен това ПЛАН ЗА ОБЯСНЕНИЕ (вярвам) очаква всички променливи за свързване да бъдат VARCHAR2, така че това означава, че операторът, който се обяснява, е малко по-различен от действителния оператор, който се изпълнява (поради неявните преобразувания на данни, когато типовете данни на аргументите за свързване в действителния операторът не е VARCHAR2.)

И (по-малко важно), когато тествам израза в TOAD, е по-лесно просто да мога да въвеждам низове в полетата за въвеждане и не трябва да се занимавам с промяна на типа данни в поле с падащ списък.

Оставям също така функциите TO_NUMBER и TO_DATE да потвърдят данните. (Поне в по-ранните версии на Oracle се сблъсках с проблеми с директното обвързване на стойност DATE и тя заобикаляше (поне част от) проверката за валидност и позволяваше невалидни стойности за дата да се съхраняват в базата данни.

Това е само лично предпочитание, базирано на минал опит. Използвам същия подход с Perl DBD.

Чудя се какво има да каже Том Кайт (asktom.oracle.com) по тази тема?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Различно подреждане по подразбиране между ORACLE и PostgreSQL

  2. От XML до списък с пътища в Oracle PL/SQL среда

  3. Предайте и връщайте персонализиран обект на масив в ibatis и оракул в java

  4. SQL заявка за получаване на първата дата, в зависимост от текущата група (~ прекъсване на контрола)

  5. Инсталацията на Oracle 12c не успя да получи достъп до временното местоположение