st_geometry can bine a long value only for insert into a long column

778
1
12-09-2019 03:29 AM
venaktesa_kumarNatarajan
New Contributor III

Hi,

I am trying to update the polyline layer using cx_oracle in python script.

i read the feature details from another layer as sde.stastext and convert it as a  below format string.

When i insert the string value as bind value using sde.stgeomerty com

 ['LINESTRING ( 9291551.34660000 4187266.23730000, 9291554.47640000 4187256.33170000, 9291591.01820000 4187201.97960000, 9291608.79190000 4187176.35690000, 9291662.02290000 4187099.15550000, 9291816.12480000 4187073.98510000, 9291848.38680000 4187068.90750000, 9291884.79440000 4187062.83460000, 9291887.57330000 4187079.48540000, 9292095.47260000 4187047.47530000, 9292097.25390000 4187058.05110000)', u'S-16059']

then I inserted using the following sql statement and got the error.

insert into SUGGESTION_LINE ( shape,SUGGESTION_ID, objectid) values ( sde.st_geometry(:1,3),:2,:3,sde.gdb_util.next_rowid('gis','SUGGESTION_LINE'))

Error: DatabaseError: ORA-01461: can bind a LONG value only for insert into a LONG column

but the same script worked fine with point layers.

Thank you for your help

0 Kudos
1 Reply
ManishGohil
New Contributor III

I was facing the same issue the reason is I am using the .net which creates string value parameter with OracleDbType.Varchar2

So I did below changes and it works now

if (((string)value).Length > 4000)
{
((OracleParameter)para).OracleDbType = OracleDbType.Clob;
}

0 Kudos