ERROR [22P02] ОШИБКА: недопустимый синтаксис ввода для целого: "";

Никогда не видел такой ошибки:

Public Function PrimkCreate ( ByVal myPrimkTable Как строки , ByVal nCon Как OdbcConnection ) Как Integer Dim анс Как Integer Dim командование составляющих As OdbcCommand = Новый OdbcCommand ( "CREATE TABLE IF NOT EXISTS" + myPrimkTable + "(" & _ "prm_id INT NOT NULL," & _ "pkni text," & _ "текст pdatum," & _ "pdatumnaplate text," & _ "pdanaodgode int," & _ "текст puldok," & _ "текст puldokbroj," & _ "текст pdatumk," & _ "текст pvrijemek," & _ "pdobid int," & _ "pdoboib text," & _ "pnabc двойной точности," & _ "purab двойной точности," & _ "ppdv двойной точности," & _ "ppnak двойной точности," & _ "pprodc двойной точности," & _ "pvrstaprimke ИНТ," & _ «pzapisniktekst текст, текст « & _ » prez, « & _ « CONSTRAINT » & myPrimkTable & « _pkey ПЕРВИЧНЫЙ КЛЮЧ (prm_id)) » , nCon ) ans = cCommand . ExecuteNonQuery () cCommand . Dispose () Возвращает ans End Function Ошибка при выполнении запроса

Создание таблицы:

    Public Function update_LPrimk(ByRef primk As Integer, ByVal mCon As OdbcConnection) As Integer

    Dim retval As Integer
    Dim uCmd As OdbcCommand = New OdbcCommand("UPDATE " & myPrimkTable & " SET " & _
                "prm_id=" & primk & ", " & _
                "pkni='" & prm.pKni & "', " & _
                "pdatum='" & prm.pDatum & "', " & _
                "pdatumnaplate='" & prm.pDatumNaplate & "', " & _
                "pdanaodgode=" & prm.pDanaodgode & ", " & _
                "puldok='" & prm.pUlDok & "', " & _
                "puldokbroj='" & prm.pUlDokBroj & "', " & _
                "pdatumk='" & prm.pDatumk & "', " & _
                "pvrijemek='" & prm.pVrijemek & "', " & _
                "pdobid='" & prm.pDobID & "', " & _
                "pdoboib='" & prm.pDobOib & "', " & _
                "pnabc='" & Replace(prm.pNabc.ToString, ",", ".") & "', " & _
                "purab='" & Replace(prm.pURab.ToString, ",", ".") & "', " & _
                "ppdv='" & Replace(prm.pPdv.ToString, ",", ".") & "', " & _
                "ppnak='" & Replace(prm.pPnak.ToString, ",", ".") & "', " & _
                "pprodc='" & Replace(prm.pProdc.ToString, ",", ".") & "', " & _
                "pvrstaprimke=" & prm.pVrstaPrimke & ", " & _
                "pzapisniktekst='" & prm.pZapisnikTekst & "', " & _
                "prez='" & prm.pRez & "' " & _
                "WHERE prm_id=" + primk.ToString, mCon)

    retval = uCmd.ExecuteNonQuery()
    uCmd.Dispose()
    Return retval
End Function

Обновить код:

UPDATE primke SET prm_id=1, pkni='U', pdatum='07.01.2013', pdatumnaplate='10.01.2013',
pdanaodgode=3, puldok='ghkzug gugug', puldokbroj='jkhk', pdatumk='', pvrijemek='', 
pdobid='', pdoboib='', pnabc='0', purab='0', ppdv='0', ppnak='0', pprodc='0', 
pvrstaprimke=0, pzapisniktekst='', prez='' WHERE prm_id=1

Запрос выглядит примерно так:

''

У меня много таблиц, где я запускаю похожие команды, но никогда не видел такой ошибки.
Что может быть проблемой?

sql,postgresql,types,sql-update,

5

Ответов: 1


2 принят

Я бы посоветовал прочитать главу « Константы» в руководстве . Это краткое и информативное чтение.
Причиной появления сообщения об ошибке в том , что integerэто пустая строка , которая не имеет никакого представления в числовой тип , как text.

@a_horse_with_no_name: Если быть точным, textэто строковая константа для PostgreSQL, которую можно отличить так же, как и ее можно использовать , только по умолчанию для строковых констант. Рассмотрим эту демонстрацию:CREATE TEMP TABLE t (i int); INSERT INTO t VALUES (1); INSERT INTO t VALUES ('2'); -- single row inserts to make sure .. INSERT INTO t VALUES ('3'::int); -- .. type is not coerced to type INSERT INTO t VALUES (4::bigint); -- .. of first row by VALUES expression. INSERT INTO t VALUES (5::numeric); INSERT INTO t VALUES (6); UPDATE t SET i = '0' WHERE i = '6'; SELECT * FROM t;texttext

SQL Fiddle.

SQL, PostgreSQL, типы, SQL-обновление,
Похожие вопросы