Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

renatoms

[Resolvido] Problema na Inclusão através de Stored Procedured

Recommended Posts

Olá!

 

Estou tentando inserir dados na minha tabela de Usuários, mas está dando a mensagem de erro abaixo.

Copiei abaixo tb, a STORED PROCEDURED, o código PHP e os dados da tabela de Usuário.

Será que alguém pode me ajudar a encontrar onde está o problema, por favor?

 

Obrigado!

 

ERRO: função ffp_insere_usuario(unknown, unknown, unknown, bigint, unknown, unknown, unknown, unknown, unknown, unknown, integer, unknown, unknown, unknown, unknown, unknown, unknown, unknown) não existe no caracter 8

DICA: Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.

 

>>> Esta é a minha STORED PROCEDURED:

 

CREATE OR REPLACE FUNCTION ffp_insere_usuario (identif_usuario in text, cpf in text, nome_usuario in text, cnpj in numeric, nome_empresa in text, vinc_usuario in text, categ_usuario in text, id_ug_usuario in integer, ug_usuario in text, id_cliente in integer, cliente in text, endereco in text, cep in numeric, bairro in text, municipio in text, uf in text, pais in text, telefone in text, ramal in text, situacao in text)
RETURNS void AS
$$
BEGIN
	INSERT INTO tfp_usuario (cd_identificador, nr_cpf, nm_usuario, nr_ramal, ds_ug, ds_cliente, nm_logradouro, nm_bairro, st_ativo, nr_cnpj_cei, ls_vinculo, ls_categoria, nr_telefone, nr_cep, ds_pais, ds_uf, nm_municipio)
	VALUES (identif_usuario, cpf, nome_usuario, ramal, ug_usuario, cliente, endereco, bairro, situacao, cnpj, vinc_usuario, categ_usuario, telefone, cep, pais, uf, municipio);

END;
$$
LANGUAGE "plpgsql";

>>> Esta é a minha página PHP:

 

<?
	$str_IdentificadorUsuario = $_POST["txt_IdentificadorUsuario"];
	$str_CpfUsuario = $_POST["txt_Cpf"];
	$str_NomeUsuario = $_POST["txt_NomeUsuario"];
	$str_Cnpj = $_POST["txt_Cnpj"];
	$str_NomeEmpresa = $_POST["txt_NomeEmpresa"];
	$str_VinculoUsuariio = $_POST["cmb_VinculoUsuario"];
	$str_CategoriaUsuario = $_POST["cmb_CategoriaUsuario"];
	$str_UgUsuario = $_POST["cmb_UgUsuario"];
	$str_Cliente = $_POST["cmb_Cliente"];
	$str_Endereco = $_POST["txt_Endereco"];
	$str_Cep = $_POST["txt_Cep"];
	$str_Bairro = $_POST["txt_Bairro"];
	$str_Municipio = $_POST["txt_Municipio"];
	$str_Uf = $_POST["txt_Uf"];
	$str_Pais = $_POST["txt_Pais"];
	$str_Telefone = $_POST["txt_Telefone"];
	$str_Ramal = $_POST["txt_Ramal"];
	$str_Situacao = $_POST["st_Inativo"];
	
	$query = "SELECT ffp_insere_usuario('$str_IdentificadorUsuario','$str_CpfUsuario','$str_NomeUsuario',$str_Cnpj,'$str_NomeEmpresa','$str_VinculoUsuariio','$str_CategoriaUsuario','$str_UgUsuario','$str_Cliente','$str_Endereco',$str_Cep,'$str_Bairro','$str_Municipio','$str_Uf','$str_Pais','$str_Telefone','$str_Ramal','$str_Situacao')";

	$rs = pg_query($dbconn, $query);
	echo $query; 
?>

>>> Dados da tabela de Usuários:

 

id_usuario - int4 NOT NULL

cd_identificador - varchar(40)

nr_cpf - varchar(11)

nm_usuario - varchar(60)

nr_ramal - varchar(5)

id_municipio - int4

id_cep - int4

id_pais - int4

id_uf - int4

id_cliente - int4

id_ug - int4

id_rede - int4

ds_ug - varchar(32)

ds_cliente - varchar(60)

nm_logradouro - varchar(100)

nm_bairro - varchar(70)

st_ativo - char(1)

nr_cnpj_cei - numeric(14)

ls_vinculo - char(1)

ls_categoria - char(1)

nr_telefone - varchar(8)

cd_DDD - varchar(4)

nr_cep - numeric(8)

ds_pais - varchar(60)

ds_uf - varchar(20)

nm_municipio - varchar(60)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está que o tipo dos parâmetros sendo passado pelo php difere do que está no código.

 

Mensagem de erro:

ffp_insere_usuario(unknown, unknown, unknown, bigint, unknown, unknown, unknown, unknown, unknown, unknown, integer, unknown, unknown, unknown, unknown, unknown, unknown, unknown) 

Sua funcao:
ffp_insere_usuario (identif_usuario in text, cpf in text, nome_usuario in text, cnpj in numeric, nome_empresa in text, vinc_usuario in text, categ_usuario in text, id_ug_usuario in integer, ug_usuario in text, id_cliente in integer, cliente in text, endereco in text, cep in numeric, bairro in text, municipio in text, uf in text, pais in text, telefone in text, ramal in text, situacao in text)

Se você analisar o tipo de cada parâmetro que você definiu na sua função com o tipo dos parâmetros mostrados no erro, perceberá:

 

passado tipo unknown onde foi definido como text (até aqui OK, já que o banco entende qualquer string como unknown e converte pra varchar ou text, dependendo do que seja)

 

passado bigint no cnpj, que é numeric. Aqui eu não sei se há problema em diferir, apesar de ser tudo numero. Eu recomendar usar um char de 14, em vez de numeric, ja que cnpj tem tamanho sempre fixo.

 

passado unknown em cep, que é numeric. Esse com certeza é um problema, já que, como eu disse, quando o banco diz que otipo é unknown, ele tenta converter para varchar, ou text, mas nunca para um tipo primitivo. Dessa forma, daria pau. E, como eu sugeri, talvez um char de 8 seja melhor que numerico.

 

Caso ainda assim não resolva, na chamada da sua função, faça um cast pro tipo definido na função. Dessa forma, chame a função fazendo CAST($variavel as INT) ou algo do gênero.(se n me engano, a syntax é essa)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, Danilo!!! Refizemos a função e funcionou! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

O erro está que o tipo dos parâmetros sendo passado pelo php difere do que está no código.

 

Mensagem de erro:

ffp_insere_usuario(unknown, unknown, unknown, bigint, unknown, unknown, unknown, unknown, unknown, unknown, integer, unknown, unknown, unknown, unknown, unknown, unknown, unknown) 

Sua funcao:
ffp_insere_usuario (identif_usuario in text, cpf in text, nome_usuario in text, cnpj in numeric, nome_empresa in text, vinc_usuario in text, categ_usuario in text, id_ug_usuario in integer, ug_usuario in text, id_cliente in integer, cliente in text, endereco in text, cep in numeric, bairro in text, municipio in text, uf in text, pais in text, telefone in text, ramal in text, situacao in text)

Se você analisar o tipo de cada parâmetro que você definiu na sua função com o tipo dos parâmetros mostrados no erro, perceberá:

 

passado tipo unknown onde foi definido como text (até aqui OK, já que o banco entende qualquer string como unknown e converte pra varchar ou text, dependendo do que seja)

 

passado bigint no cnpj, que é numeric. Aqui eu não sei se há problema em diferir, apesar de ser tudo numero. Eu recomendar usar um char de 14, em vez de numeric, ja que cnpj tem tamanho sempre fixo.

 

passado unknown em cep, que é numeric. Esse com certeza é um problema, já que, como eu disse, quando o banco diz que otipo é unknown, ele tenta converter para varchar, ou text, mas nunca para um tipo primitivo. Dessa forma, daria pau. E, como eu sugeri, talvez um char de 8 seja melhor que numerico.

 

Caso ainda assim não resolva, na chamada da sua função, faça um cast pro tipo definido na função. Dessa forma, chame a função fazendo CAST($variavel as INT) ou algo do gênero.(se n me engano, a syntax é essa)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.