Procedure Inserir dados MySQL
12/08/2020
0
Boa tarde,
Estou com uma situação para inserir os dados em uma tabela do MySQL, enquanto não tem caracteres especiais o UPDATE funciona, na linha que tem ele já para:
Já tentei mudar a COLLECTION para outras opções sem sucesso:
a saida do erro é a seguinte:
A quantidade de caracteres nesse campo é bem grande, e tem vários caracteres especiais, é a descrição do produto.
Será que preciso converter o campo para algum outro?
Estou utilizando o SQL com o servidor vinculado Mysql
Grato.
Estou com uma situação para inserir os dados em uma tabela do MySQL, enquanto não tem caracteres especiais o UPDATE funciona, na linha que tem ele já para:
DECLARE @VERIFICACADASTROS NVARCHAR(MAX), @CADASTRADO INT, @POST_DATE DATETIME, @POST_DATE_GMT DATETIME, @POST_CONTENT NVARCHAR(MAX), @POST_TITLE NVARCHAR(MAX), @POST_EXCERPT NVARCHAR(MAX), @POST_NAME NVARCHAR(MAX), @POST_MODIFIED DATETIME, @POST_MODIFIED_GMT DATETIME, @INSERT NVARCHAR(MAX), @UPDATE NVARCHAR(MAX), @SALDO INT, @ESTOQUE NVARCHAR(10), @PRECO DECIMAL(15,2), @ALTURA INT, @LARGURA INT, @COMPRIMENTO INT, @PESO INT, @SKU INT DECLARE ATUALIZA_PRODUTOS CURSOR FOR SELECT pro.CODPROD FROM jiva.TGFPRO PRO with(nolock) LEFT JOIN (SELECT sku FROM openquery(woocommerce, ''''select sku from wp_ixd5jn_posts where post_type = ''''''''product'''''''' and post_status = ''''''''publish'''''''' and sku is NOT null'''')) AS WOO ON WOO.sku = PRO.CODPROD WHERE PRO.AD_USADOLV = ''''S'''' AND ATIVO = ''''S'''' AND AD_NOMEPRDLV IS NOT NULL AND AD_ATIVOLV = ''''D'''' AND PRO.AD_ALTERCAO IS NOT NULL AND WOO.SKU IS NOT NULL OPEN ATUALIZA_PRODUTOS FETCH NEXT FROM ATUALIZA_PRODUTOS INTO @CODPROD WHILE @@FETCH_STATUS = 0 BEGIN /* OBTÉM AS INFORMAÇÕES DO PRODUTO */ SELECT @POST_DATE = GETDATE(), @POST_DATE_GMT = DATEADD(HOUR,+3,GETDATE()), @POST_CONTENT = ISNULL(AD_DESCLONGALV,ISNULL(AD_DESCURTALV,ISNULL(AD_NOMEPRDLV,DESCRPROD))), @POST_TITLE = (AD_NOMEPRDLV), @POST_EXCERPT = ISNULL(AD_DESCURTALV,ISNULL(AD_NOMEPRDLV,DESCRPROD)), @POST_NAME = CAST(PRO.CODPROD AS VARCHAR(5)) + ''''-'''' + [jiva].[FN_NOME_PRODUTO_LOJA_VIRTUAL](AD_NOMEPRDLV), @POST_MODIFIED = GETDATE(), @POST_MODIFIED_GMT = DATEADD(HOUR,+3,GETDATE()) from jiva.TGFPRO PRO with(nolock) WHERE PRO.AD_USADOLV = ''''S'''' AND AD_USADOLV = ''''S'''' AND ATIVO = ''''S'''' AND AD_NOMEPRDLV IS NOT NULL AND AD_ATIVOLV = ''''D'''' AND PRO.CODPROD = @CODPROD UPDATE OPENQUERY(WOOCOMMERCE, ''''select ID, post_title, post_name, post_content, post_excerpt, post_modified, post_modified_gmt, sku from wp_ixd5jn_posts where post_type = ''''''''product'''''''' and post_status = ''''''''publish'''''''' and sku is NOT null'''') set post_title = @POST_TITLE COLLATE DATABASE_DEFAULT WHERE sku = @codprod Print @POST_TITLE FETCH NEXT FROM ATUALIZA_PRODUTOS INTO @CODPROD END CLOSE ATUALIZA_PRODUTOS DEALLOCATE ATUALIZA_PRODUTOS END
Já tentei mudar a COLLECTION para outras opções sem sucesso:
a saida do erro é a seguinte:
Porta macho M8 norma DIN-376 tamanho TC-820 PROTETOR DE BORRACHA FRONTRAL SANFONADO PARA BARRAMENTOS DE 380 X 330MM PROTETOR DE BORRACHA TRASEIRO LISO PARA BARRAMENTOS DE 450 X 850MM O provedor do OLE DB "MSDASQL" para o servidor vinculado "WOOCOMMERCE" retornou a mensagem "[MySQL][ODBC 8.0(a) Driver][mysqld-5.7.17-13-log]Incorrect string value: ''''\xC7O R\xC1P...'''' for column ''''post_title'''' at row 1". Mensagem 7343, Nível 16, Estado 4, Linha 85 O provedor do OLE DB "MSDASQL" para o servidor vinculado "WOOCOMMERCE" não pôde UPDATE a tabela "[MSDASQL]".
A quantidade de caracteres nesse campo é bem grande, e tem vários caracteres especiais, é a descrição do produto.
Será que preciso converter o campo para algum outro?
Estou utilizando o SQL com o servidor vinculado Mysql
Grato.
Ronaldo Pontes
Curtir tópico
+ 0
Responder
Posts
13/08/2020
Stella Oliveira
Ei Ronaldo, por ser uma situação bem complexa recomendo você usar aquela boa prática de "dividir para conquistar", divida sua procedure em etapas rodando separadamente cada ação para entender onde está de fato quebrando e assim poder resolver o seu problema.
Caso queira fazer junto pode entrar em contato comigo live:stellabertthiolly_1 e fazemos uma call via skype.
Abraço !
Caso queira fazer junto pode entrar em contato comigo live:stellabertthiolly_1 e fazemos uma call via skype.
Abraço !
Responder
Clique aqui para fazer login e interagir na Comunidade :)