Несоответствие типов данных в хранимой процедуре foxpro - PullRequest
0 голосов
/ 02 ноября 2010

Я хочу сделать копию каждой записи, вставленной в jobact , в новую таблицу jobactupdates . Я использую хранимую процедуру для этой цели. Обе таблицы абсолютно одинаковы и не имеют одинаковых столбцов. Когда я вставляю данные в jobact , используя запрос вставки, хранимая процедура завершается ошибкой и выдает ошибку несоответствия типов данных.

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

PROCEDURE insertData

INSERT INTO jobactupdates (jobcode ,jobdescr ,fileno ,port ,mastcode ,mastdescr ,mastdescr1 ,shipper ,goods ,unit1 ,qty ,unit ,vesname ,arremarks ,arrdate ,remarks ,docstat ,docdate ,blno ,bldate ,jastat ,rate ,demand ,received ,balance ,transpor,dldate);

VALUES(jobact.jobcode,jobact.jobdescr,jobact.fileno,jobact.port,jobact.mastcode,jobact.mastdescr,jobact.mastdescr1,jobact.shipper,jobact.goods,jobact.unit1,jobact.qty,jobact.unit,jobact.vesname,jobact.arremarks,jobact.arrdate,jobact.remarks,jobact.docstat,jobact.docdate,jobact.blno,jobact.bldate,jobact.jastat,jobact.rate,jobact.received,jobact.balance,jobact.transpor,jobact.dldate);

ENDPROC

Ответы [ 3 ]

0 голосов
/ 02 ноября 2010

Для символьных полей: запишите их в '' метки, Числовые поля: просто цифры, например, 123, Поля даты: {^yyyy-mm-dd} (В поле даты также может быть время).

0 голосов
/ 03 ноября 2010

Это ваш фактический запрос?Если это так, то, что ваши предложения Columns и Values ​​содержат разные списки полей, безусловно, вызвало эту ошибку:

Insert Into ...
bldate,
jastat,
rate,
demand,
received,
balance ..

Values ...
jobact.bldate, 
jobact.jastat,
jobact.rate, 
jobact.received, <--
jobact.balance,  <--
jobact.transpor  <--

.

0 голосов
/ 02 ноября 2010

Ошибка несоответствия типов данных возникает при попытке вставить недопустимый тип данных в поле. Например, если вы попытаетесь сохранить строку в целочисленном поле. Я бы дважды проверил структуры таблиц и подтвердил бы, что они идентичны.

Еще одна вещь, о которой следует знать, это если для какого-либо из типов полей JOBACT установлено значение Integer (AutoInc). Они должны быть установлены в Integer в таблице JOBACTUPDATES. В противном случае вы получите сообщение об ошибке «Поле доступно только для чтения».

...