Thank you Richard.
I shall try your suggestions this morning.

On Monday, 23 April 2012 17:12:36 UTC+2, Richard wrote:
>
> Also, since you have a lot of column, you may start with fewer column and 
> identify the exact column that trigger the error.
>
> I will be easier to help you with simpler model, you then can generalize 
> after we had found the problem.
>
> Richard
>
> On Mon, Apr 23, 2012 at 11:10 AM, Richard Vézina <
> [email protected]> wrote:
>
>> It should not be the problem, but to make sure you set not null at the 
>> backend level you need : notnull=True if I remember.
>>
>> Richar
>>
>>
>> On Mon, Apr 23, 2012 at 10:40 AM, Rakesh Singh 
>> <[email protected]>wrote:
>>
>>> Hi,
>>>
>>> I am having a lot of trouble implementing on Oracle.
>>> When I run my app on SQLite or MySQL, but I am having lots of different 
>>> errors on Oracle.
>>> One problem I have is that when an error is returned, the application 
>>> hangs.
>>> I can view the admin app and browse the error ticket, but the thread 
>>> that is doing the database operation seems to hang. I have to kill -9 and 
>>> restart.
>>>
>>> My 1st table created correctly, but my 2nd gave me errors with floats, 
>>> so I changed to decimal and finally integer, but I still get errors.
>>> Again, on sqlite and MySQL, it works perfectly, so I'm not sure where 
>>> the problem could be.
>>>
>>> What I haven't done on the 2nd table is used the "requires" validators 
>>> as the user may not have all the required information during the capturing 
>>> process.
>>>
>>>
>>> Error : DatabaseError: ORA-00910: specified length too long for its 
>>> datatype
>>>
>>> Traceback
>>>  
>>>
>>> Traceback (most recent call last):
>>>   File "/data/source/dtos/web2py/gluon/restricted.py", line 205, in 
>>> restricted
>>>     exec ccode in environment
>>>   File "/data/source/dtos/web2py/applications/dtos/models/db.py", line 
>>> 470, in <module>
>>>     label='Start Date'),
>>>   File "/data/source/dtos/web2py/gluon/dal.py", line 6320, in 
>>> define_table
>>>     polymodel=polymodel)
>>>   File "/data/source/dtos/web2py/gluon/dal.py", line 633, in create_table
>>>     precision, scale = map(int,field.type[8:-1].split(','))
>>> ValueError: invalid literal for int() with base 10: ''
>>>
>>>
>>>
>>>
>>> Here is my model :
>>>
>>> db.define_table('DT_SARS_DECLARANT',
>>>     Field('SECTION_ID',
>>>         'string',
>>>         length=1,
>>>         default='B',
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Section Identifier'),
>>>     Field('RECORD_TYPE',
>>>         'string',
>>>         length=6,
>>>         default='DD',
>>>         required=True,
>>>         #requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()],
>>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>>         label='Record Type'),
>>>     Field('RECORD_STATUS',
>>>         'string',
>>>         length=2,
>>>         default='N',
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Record Status',
>>>         comment='''Indicates the status of the record, whether it is 
>>>         a new record, an adjusted record or a record that must be 
>>> deleted 
>>>         from the declaration.'''),
>>>     Field('UNIQUE_NUM',
>>>         'string',
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()], 
>>>         label='Unique Number',
>>>         comment='''The submitting entity’s system will have a unique 
>>>         identifier for each record. This is the number that must be 
>>> entered 
>>>         into this field.'''),
>>>     Field('ROW_NUMBER',
>>>         'integer',
>>>         required=True,
>>>         requires=IS_INT_IN_RANGE(0, 9999999999),
>>>         label='Row Number',
>>>         comment='''A sequential number to indicate the row number 
>>>         in the file.'''),
>>>     Field('TRANS_DUE_DATE',
>>>         'date',
>>>         required=True,
>>>         requires=IS_DATE(),
>>>         label='Transaction Due Date',
>>>         comment='This is the due date of the transactionthat pertains to 
>>> this record.'),
>>>     Field('DIV_DECLARANT',
>>>         'string',
>>>         length=1,
>>>         required=True,
>>>         requires=[IS_NOT_EMPTY(), IS_UPPER()],
>>>         label='Divident Declarant',
>>>         comment='Indicates if the entity submitting the file also 
>>> declared the dividend for this record.'),
>>>     # @TODO, There is a field that is missing in the Excel sheet.
>>>     # Confirmation if this is not required, else, it will go here...
>>>     Field('NATURE',
>>>         'string',
>>>         length=33,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Dividend Declarant: Nature Of Person',
>>>         comment='The type/category of the divident declarant.'),
>>>     Field('REG_NAME',
>>>         'string',
>>>         length=150,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Dividend Declarant: Registered Name',
>>>         comment='The name of the divident declarant.'),
>>>     Field('TRADE_NAME',
>>>         'string',
>>>         length=150,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Trading Name',
>>>         comment='The name the devidend declaring entity is trading.'),
>>>     Field('REG_NUM',
>>>         'string',
>>>         length=15,
>>>         required=False,
>>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>>         label='Registration Number',
>>>         comment='The registration number of the divedent declaring 
>>> entity.'),
>>>     Field('ISIN_NUM',
>>>         'string',
>>>         length=12,
>>>         required=False,
>>>         requires=[IS_UPPER(), IS_ALPHANUMERIC()],
>>>         label='ISIN Number',
>>>         comment='The international security identification number.'),
>>>     # @TODO The following Income Tax number field is marked 'On 
>>> Announcemnt.
>>>     # Confirmation required is this field is to be included. Is is for 
>>> now...
>>>     Field('INC_TAX_NUM',
>>>         'integer',
>>>         required=False,
>>>         requires=IS_INT_IN_RANGE(),
>>>         label='Income Tax Reference Number',
>>>         comment='The entity\'s income tax number as registered at 
>>> SARS.'),
>>>     Field('RSA_RES',
>>>         'string',
>>>         length=1,
>>>         required=True,
>>>         default='Y',
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Resident Of RSA',
>>>         comment='Indicates if the dividend declaring entity is resident 
>>> in South Africa.'),
>>>     Field('SHARES_LISTED',
>>>         'string',
>>>         length=1,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Shares Listed On JSE',
>>>         comment='Indicates if the shares for which the dividend is 
>>> declared are listed on the JSE.'),
>>>     Field('MICRO_BUS',
>>>         'string',
>>>         length=1,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Micro Business',
>>>         comment='Indicates if the dividend declaring entity is 
>>> registered as a micro busines.'),
>>>     Field('STC_CREDIT',
>>>         'double',
>>>         required=False,
>>>         requires=IS_FLOAT_IN_RANGE(0, 999999999999999.99),
>>>         label='Available STC Credit',
>>>         comment='''This is the rolling balance of the STC credit that 
>>> the dividend declaring entity 
>>>         has available to utilise when dividend is declared.'''),
>>>     Field('STC_CREDIT_UTIL',
>>>         'double',
>>>         required=False,
>>>         requires=IS_FLOAT_IN_RANGE(0, 999999999999999.99),
>>>         label='STC Credit Utilised',
>>>         comment='The amount of STC credit that is utilised with this 
>>> declaration of dividend.'),
>>>     Field('ENTITY_TYPE',
>>>         'string',
>>>         length=35,
>>>         required=False,
>>>         requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()],
>>>         label='Entity Type',
>>>         comment='The type/ category of the entity the dividend was 
>>> received from.'),
>>>     Field('ENTITY_NAME',
>>>         'string',
>>>         length=150,
>>>         required=False,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Entity Name',
>>>         comment='The name of the entity the dividend was received 
>>> from.'),
>>>     Field('ENTITY_TRADE_NAME',
>>>         'string',
>>>         length=150,
>>>         required=False,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Entity Registered Name',
>>>         comment='The name the entity that the dividend was received from 
>>> is trading under.'),
>>>     Field('ENTITY_REG_NUM',
>>>         'string',
>>>         length=15,
>>>         required=False,
>>>         requires=[IS_UPPER(), IS_ALPHANUMERIC(), IS_NOT_EMPTY()],
>>>         label='Entity Registration Number',
>>>         comment='The number of the entity that the dividend was received 
>>> from.'),
>>>     # @TODO Field is highlighted. We will include it for now.
>>>     Field('ENTITY_REF_NUM',
>>>         'integer',
>>>         required=False,
>>>         requires=[IS_NOT_EMPTY(), IS_INT_IN_RANGE(0, 999999999999)],
>>>         label='Entity Tax Reference Number',
>>>         comment='The entity income tax number as registered at SARS.'),
>>>     Field('ENTITY_REC_DATE',
>>>         'date',
>>>         required=False,
>>>         requires=IS_DATE(),
>>>         label='Entity Date Received',
>>>         comment='The date on which the dividend was received by the 
>>> submitting entity.'),
>>>     Field('DIV_TYPE',
>>>         'string',
>>>         length=2,
>>>         required=True,
>>>         requires=[IS_UPPER(), IS_NOT_EMPTY()],
>>>         label='Divident Type',
>>>         comment='This field indicates the type of dividend that is 
>>> declared/ received.'),
>>>     Field('NUM_SHARES',
>>>         'double',
>>>         required=True,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0, 
>>> 999999999999999.999999)],
>>>         label='Number Of Shares',
>>>         comment='Number of shares or units to which the dividend 
>>> relates.'),
>>>     Field('DIV_PER_SHARE',
>>>         'double',
>>>         required=True,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0, 
>>> 999999999999999.999999)],
>>>         label='Dividend Per Share',
>>>         comment='The dividend that is declared per share or unit.'),
>>>     Field('DIV_VALUE',
>>>         'double',
>>>         required=True,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0, 
>>> 999999999999999.999999)],
>>>         label='Divident Value',
>>>         comment='The gross value of the dividend declared.'),
>>>     Field('DATE_DECLARED',
>>>         'date',
>>>         required=True,
>>>         requires=IS_DATE(),
>>>         label='Date Declared',
>>>         comment='The date the dividend was announced.'),
>>>     Field('DATE_PAY',
>>>         'date',
>>>         required=True,
>>>         requires=IS_DATE(),
>>>         label='Date Paid/Payable',
>>>         comment='The date on which the dividend was paid by the dividend 
>>> declaring entity.'),
>>>     Field('STC_CREDIT_SHARE',
>>>         'double',
>>>         required=True,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.000000, 
>>> 999999999999999.999999)],
>>>         label='STC Credit Per Share',
>>>         comment='''The portion of the dividend per share that should be 
>>> subtracted for STC credit. 
>>>         This value must be carried through to the recipient detail.'''),
>>>     Field('MICRO_EXEMPT',
>>>         'double',
>>>         required=False,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.00, 
>>> 999999999999999.99)],
>>>         label='Micro Business Exemption',
>>>         comment='The amount that can be claimed as allowable micro 
>>> business exemption.'),
>>>     Field('IS_TAX_PAY',
>>>         'double',
>>>         required=False,
>>>         requires=[IS_NOT_EMPTY(), IS_FLOAT_IN_RANGE(0.00, 
>>> 999999999999999.99)],
>>>         label='IS Tax Payable',
>>>         comment='The amount of tax paid to SARS in respect of In Specie 
>>> dividends.')
>>>    )
>>>
>>>
>>>
>>> db.define_table('DT_SARS_RECIPIENT',
>>>     Field('SECTION_ID',
>>>         'string',
>>>         length=1,
>>>         required=True,
>>>         label='Section Identifier'),
>>>     Field('RECORD_TYPE',
>>>         'string',
>>>         length=6,
>>>         required=True,
>>>         label='Record Type'),
>>>     Field('RECORD_STATUS',
>>>         'string',
>>>         length=2,
>>>         required=True,
>>>         label='Record Status'),
>>>     Field('UNIQUE_NUM',
>>>         'string',
>>>         length=100,
>>>         required=True,
>>>         label='Unique Number'),
>>>     Field('ROW_NUM',
>>>         'integer',
>>>         required=True,
>>>         label='Row Number'),
>>>     Field('TRANS_DUE_DATE',
>>>         'date',
>>>         required=True,
>>>         requires=IS_DATE(),
>>>         label='Transaction Due Date'),
>>>     Field('DIV_UNIQUE_NUM',
>>>         'string',
>>>         length=100,
>>>         required=True,
>>>         label='Dividend Unique Number'),
>>>     Field('DIV_TYPE',
>>>         'string',
>>>         length=2,
>>>         required=True,
>>>         label='Dividend Type'),
>>>     Field('PERSON_LIABLE',
>>>         'string',
>>>         length=2,
>>>         required=True,
>>>         label='Person Liable For Tax'),
>>>     Field('DIST_TYPE',
>>>         'string',
>>>         length='2',
>>>         required=True,
>>>         label='Distribution Type'),
>>>     Field('NATURE_OF_PERSON',
>>>         'string',
>>>         length=33,
>>>         required=True,
>>>         label='Nature Of Person'),
>>>     Field('FIRST_NAMES',
>>>         'string',
>>>         length=100,
>>>         label='First Names'),
>>>     Field('SURNAME_REGNAME',
>>>         'string',
>>>         length=125,
>>>         label='Surname / Registered Name'),
>>>     Field('TRADE_NAME',
>>>         'string',
>>>         length=150,
>>>         label='Trading Name'),
>>>     Field('TAX_RES',
>>>         'string',
>>>         length=3,
>>>         label='Tax Residency'),
>>>     Field('ID_TYPE',
>>>         'string',
>>>         length=3,
>>>         label='Identification Type'),
>>>     Field('ID_NUM',
>>>         'string',
>>>         length=30,
>>>         label='Identification Number'),
>>>     Field('CNTY_ISSUE',
>>>         'string',
>>>         length=3,
>>>         label='Country of Issue'),
>>>     Field('INC_TAX_REF',
>>>         'integer',
>>>         label='Income Tax Reference Number'),
>>>     Field('DOB_INC',
>>>         'date',
>>>         label='Date Of Birth\/Inception'),
>>>     Field('EXEMPT_CLAIM_PAR',
>>>         'string',
>>>         length=1,
>>>         label='Exemption Claimed Under Par'),
>>>     Field('DTA_RATE_REQ',
>>>         'string',
>>>         label='DTA Reduced Rate Requirements Met'),
>>>     Field('DATE_PAY',
>>>         'date',
>>>         label='Date Paid\/Payable'),
>>>     Field('NUM_SHARES',
>>>         'integer',
>>>         label='Number Of Shares'),
>>>     Field('DIV_SHARE',
>>>         'integer',
>>>         label='Number Of Dividends Per Share'),
>>>     Field('DIV_VALUE',
>>>         'integer',
>>>         label='Dividend Value'),
>>>     Field('STC_SHARE',
>>>         'string',
>>>         length=22,
>>>         label='STC Credit Per Share'),
>>>     Field('MICRO_EXEMPT',
>>>         'string',
>>>         length=18,
>>>         label='Micro Business Exemption'),
>>>     Field('TAX_RATE_APPL',
>>>         'string',
>>>         length=5,
>>>         label='Tax Rate Applicable'),
>>>     Field('REBATE_FOREIGN',
>>>         'integer',
>>>         label='Rebate For Foreign Tax Paid'),
>>>     Field('TAX_WITHHELD',
>>>         'integer',
>>>         label='Tax Withheld'),
>>>     Field('NET_AMNT_BO',
>>>         'integer',
>>>         label='Net Amount Distributed To BO'),
>>>     Field('CORP_ACT_ID',
>>>         'integer',
>>>         label='Corporate Action ID'),
>>>     Field('SIN',
>>>         'integer',
>>>         length=25,
>>>         label='SIN'),
>>>     Field('SCA_NUM',
>>>         'integer',
>>>         label='SCA ID'),
>>>     Field('BENEF_ACC_NUM',
>>>         'integer',
>>>         label='Beneficial Owner Account Number'),
>>>     Field('DOC_REF',
>>>         'integer',
>>>         label='Document Reference Number'),
>>>     Field('STATUS',
>>>         'string',
>>>         length=3,
>>>         label='Status'),
>>>     Field('START_DATE',
>>>         'date',
>>>         label='Start Date'),
>>>
>>>     )
>>>         
>>>      
>>> Any idea what I could be missing to satisfy Oracle?
>>>
>>> Many thanks
>>>
>>> Rakesh
>>>
>>>
>>>
>>>
>>>
>>
>

Reply via email to