Когда я запускаю команду вставки SQL, которая получает изображение и другие данные из таблицы на сервере Oracle Linked Server, вставляя его на SQL-сервере, он работает. Когда я запускаю тот же самый запрос внутри программы Visual Basic 6, вставка также работает, но изображение не вставлено.Вставка команды работает в MS с Oracle Linked Server, но не в Visual Basic 6
Связанная часть сервера работает, так как я могу сделать несколько запросов с успехом.
Вставка, которую я запускаю, приведена ниже. Обратите внимание, что в обоих сценариях вставка не вызывает ошибку; они работают в VB и Management Studio, НО, при работе через VB, просто изображение не приходит.
INSERT INTO Employees
(
PhotoEmployee,
TheID,
Name
)
VALUES
(
(Select FOTO_Humanus From OPENQUERY(ORACLE_LinkedServer, 'Select FOTO.pesFoto FOTO_Humanus FROM Pessoa_Foto1 FOTO WHERE FOTO.pesCodPessoa = 32892')),
'900397',
'MARCELO ROCHA'
)
Я искал много, но я не мог найти никого с аналогичной проблемой.
Поле SQL-Server, получающее изображение, относится к типу IMAGE.
В Oracle изображение хранится в поле, которое относится к типу LONG RAW.
Вы можете помочь?
EDIT: (добавлены подробности)
Соединение нормально ... им довольно уверен. Кроме того, нет ошибки при выполнении команды SQL или подключения к базе данных: Everythings отлично работает, за исключением этого изображения .., который не вставлен в базу данных назначения. Все поля ohter вставлены без проблем. Все поля находятся в одной таблице.
Код Visual Basic 6, который я использую, следующий.
1 - O заполнить массив с точным запросом мне нужно
2 - Скоро позже я итерация в этом массиве, выполнение запроса SQL.
Вот код VB:
SQLOracleTemp = "Select FOTO.pesFoto FOTO_Humanus FROM Pessoa_Foto1 FOTO WHERE FOTO.pesCodPessoa = 32892"
NomeLinkedServer = "ORACLE_LinkedServer"
SQL_InsertColab = "INSERT INTO Employees" & vbCrLf
SQL_InsertColab = SQL_InsertColab & " (" & vbCrLf
SQL_InsertColab = SQL_InsertColab & " funFotoColaborador," & vbCrLf
SQL_InsertColab = SQL_InsertColab & " TheID," & vbCrLf
SQL_InsertColab = SQL_InsertColab & " Name" & vbCrLf
SQL_InsertColab = SQL_InsertColab & ")" & vbCrLf
SQL_InsertColab = SQL_InsertColab & " VALUES" & vbCrLf
SQL_InsertColab = SQL_InsertColab & " (" & vbCrLf
SQL_InsertColab = SQL_InsertColab & " (Select FOTO_Humanus From OPENQUERY(" & NomeLinkedServer & ", '" & SQLOracleTemp & "'))," & vbCrLf
SQL_InsertColab = SQL_InsertColab & " " & aColabs_Insert(UBound(aColabs_Insert)).IDOAS & "," & vbCrLf
SQL_InsertColab = SQL_InsertColab & " " & aColabs_Insert(UBound(aColabs_Insert)).Nome & vbCrLf
SQL_InsertColab = SQL_InsertColab & ")" & vbCrLf
aSQL(UBound(aSQL)) = SQL_InsertColab
ReDim Preserve aSQL(UBound(aSQL) + 1)
For ContaSQL = 0 To UBound(aSQL)
if aSQL(ContaSQL) <> "" then
gConexao_Banco.Execute aSQL(ContaSQL)
enf if
Next
Пожалуйста, покажите нам код VB6, который не работает –
Привет, спасибо за сообщение. Я отредактировал вопрос и добавил код VB. Код VB создает точный запрос, который я опубликовал в начале вопроса. Если я остановлю VB, вы получите запрос в режиме отладки и выполните команду byb в Management Studio .. он работает. Если я разрешу vb работать .. он выполняет запрос, вставка работает ... НО .. ИЗОБРАЖЕНИЕ не наступило. Когда я проверяю, поле изображения равно NULL. Когда я делаю это вручную .. когда я проверяю .. я могу видеть данные изображения в поле, и он также появляется в моем приложении – Murch
В каком режиме вы открываете свое соединение? Вы проверили сборку ошибок соединения после вызова Execute? – jac