Incorrect syntax near ','

-2

The code is this:

<i> <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<!--#include virtual="aplicativos/arquivos.asp"-->
<!--#include virtual="aplicativos/JSON_UTIL_0.1.1.asp" -->
<!--#include virtual="aplicativos/JSON_2.0.4.asp" -->
<!--#include virtual="aplicativos/validacao.asp"-->

<%
'----------------------------------------'
Dim d

set d = ConverteRequestParaDicionario(Request)

acao                = d.item("acao")
chbeneficio         = d.item("chbeneficio")
'----------------------------------------'
select case acao
    case "salvarDesempregado"  SalvarDesempregado()
end select
'----------------------------------------'
sub SalvarDesempregado

if d.item("nome") = "" then
        nome = "null"
else
    nome = "'" & d.item("nome") & "'"
end if

if d.item ("rg") = "" then
    rg = "null"
else
    rg = "'" & d.item("rg") & "'"
end if

if d.item ("cpf") = "" then
    cpf = "null"
else
    cpf = "'" & d.item("cpf") & "'"
end if

if d.item ("CTPSserie") = "" then
    CTPSserie = "null"
else
    CTPSserie = "'" & d.item("CTPSserie") & "'"
end if

if d.item ("ctps") = "" then
    ctps = "null"
else
    ctps = "'" & d.item("ctps") & "'"

end if

if d.item ("status") = "" then
    status = "null"
else
    status = "'" & d.item("status") & "'"

end if
if d.item("cep") = "" then
    cep = "null"
else
    cep = "'" & d.item("cep") & "'"
end if

if d.item ("endereco") = "" then
    endereco = "null"
else
    endereco = "'" & d.item("endereco") & "'"
end if

if d.item ("numero") = "" then
    numero = "null"
else
    numero = "'" & d.item("numero") & "'"
end if

if d.item ("bairro") = "" then
    bairro = "null"
else
    bairro = "'" & d.item("bairro") & "'"

end if

if d.item ("municipio") = "" then
    municipio = "null"
else
    municipio = "'" & d.item("municipio") & "'"

end if
if d.item ("complemento") = "" then
    complemento = "null"
else
    complemento = "'" & d.item("complemento") & "'"

end if
if d.item("estado") = "" then
    estado = "null"
else
    estado"'" & d.item("estado") & "'"
end if

if d.item ("email") = "" then
    email = "null"
else
    email = "'" & d.item("email") & "'"
end if

if d.item ("telefone") = "" then
    telefone = "null"
else
    telefone = "'" & d.item("telefone") & "'"
end if

if d.item ("celular") = "" then
    celular = "null"
else
    celular = "'" & d.item("celular") & "'"

end if

if d.item ("empresa") = "" then
    empresa = "null"
else
    empresa = "'" & d.item("empresa") & "'"

end if
if d.item ("profissao") = "" then
    profissao = "null"
else
    profissao = "'" & d.item("profissao") & "'"

end if
if d.item("dispensa") = "" then
    dispensa = "null"
else
    dispensa = "'" & d.item("dispensa") & "'"
end if

if d.item ("emprecep") = "" then
    emprecep = "null"
else
    emprecep = "'" & d.item("emprecep") & "'"
end if

if d.item ("empreendereco") = "" then
    empreendereco = "null"
else
    empreendereco = "'" & d.item("empreendereco") & "'"
end if

if d.item ("emprenumero") = "" then
    emprenumero = "null"
else
    emprenumero = "'" & d.item("emprenumero") & "'"

end if

if d.item ("emprecomplemento") = "" then
    emprecomplemento = "null"
else
    emprecomplemento = "'" & d.item("emprecomplemento") & "'"

end if

if d.item ("emprebairro") = "" then
    emprebairro = "null"
else
    emprebairro = "'" & d.item("emprebairro") & "'"

end if

if d.item ("empremunicipio") = "" then
    empremunicipio = "null"
else
    empremunicipio = "'" & d.item("empremunicipio") & "'"

end if

if d.item ("selo") = "" then
    selo = "null"
else
    selo = "'" & d.item("selo") & "'"

end if

if d.item ("entrega") = "" then
    entrega = "null"
else
    entrega = "'" & d.item("entrega") & "'"

end if

if d.item ("validade") = "" then
    validade = "null"
else
    validade = "'" & d.item("validade") & "'"

end if

SQL = "exec dbo.sp_desemp_insereDesempregado " & chbeneficio & ",'" & nome & "','" & RG & "','" & CPF & "','" & cep & "','" & endereco & "','" & numero & "','" & bairro & "','" & municipio & "','" & complemento & "','" &estado & "','" & email & "','" & telefone & "','" & celular & "','" & CTPS & "','" & CTPSserie & "','" & empresa & "','" & profissao & "','" & dispensa & "','" & emprecep & "','" & empreendereco & "','" & emprenumero & "','" & emprecomplemento & "','" & emprebairro & "','" & empremunicipio & "','" & selo & "','"& entrega & "','" & validade & "'"

QueryToJSON(banco, SQL).flush
response.end
end sub
'----------------------------------------'
%> </i>

And the error I get is always this:

Microsoft OLE DB Provider for SQL Server error '80040e14'

Incorrect syntax near ','.

/aplicativos/JSON_UTIL_0.1.1.asp, line 5

I have searched in several places, including here and I can not resolve this error. The procedure works, I already tested it in SQL Server.

    
asked by anonymous 01.11.2018 / 15:52

1 answer

1

I do not understand ASP / VBSCRIPT but the languages have a lot in common, which made it possible to understand what the code does; and how you do it.

In the code transcribed for this topic I noticed that the content of the variables was delimited by apices ( '). For example, if in d.item("nome") we have the content Natália , then in the excerpt

if d.item("nome") = "" then
        nome = "null"
else
    nome = "'" & d.item("nome") & "'"
end if

At the end we will have 'Natália' in nome , with apices in the contents of the variable.

When using the following SQL command line

SQL = "exec dbo.sp_desemp_insereDesempregado " & "'" & nome & "','" ...

What we will have in SQL is

exec dbo.sp_desemp_insereDesempregado ''Natália'',' ...

In other words, apices are left over ...

I suggest that in the command that sets SQL remove all apices; would look like this:

SQL = "exec dbo.sp_desemp_insereDesempregado " & nome & "," ...

If space is required before and after the concatenation operator & , be aware of the &estado stretch.

    
01.11.2018 / 17:17