Excecutar procedure
31/05/2011
0
(mysql): CALL SpInsertCidade('asadsfsfas',1) 1318: Incorrect number of arguments for PROCEDURE SpInsertCidade; expected 3, got 2
A procedure é:
CREATE DEFINER = 'root'@'localhost' PROCEDURE `SpInsertCidade`( IN varId INTEGER(11), IN varDescricao VARCHAR(60), IN varUF INTEGER(11) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN IF (exists(select Cid_Id from cidades where (Cid_Id = varId))) THEN UPDATE cidades SET Cid_Descricao = VarDescricao, UF_Id = varUF where (Cid_Id = varId); ELSE INSERT INTO cidades( Cid_Descricao, UF_Id) VALUES( varDescricao, varUF); END IF; END;
a função em php é:
/* função para inserir cidades */ function gravar(){ $sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])"; $this->resultado = $this->con->banco->Execute($sql); }
Acredito que o erro seja de concatenação ja que se trata de dois parametros um Varchar e um Inteiro
Sidney Abreu
Posts
14/06/2011
Natal Lima
$sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."'".,$_REQUEST[UF_ID].")";
Natal de Lima
14/06/2011
Rafael Mattos
$sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."'".,$_REQUEST[UF_ID].")";
Natal de Lima
pow amigo sou de Campo Grande/MS tb.
bem dificil ver algum de CG aqui.
Seja bem vindo a o forum
--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
14/06/2011
Natal Lima
15/06/2011
Sidney Abreu
(mysql): CALL SpInsertCidade('asadsfsfas',1) 1318: Incorrect number of arguments for PROCEDURE loja.SpInsertCidade; expected 3, got 2
ADOConnection._Execute(CALL SpInsertCidade('asadsfsfas',1), false) % line 1015, file: adodb.inc.php ADOConnection.Execute(CALL SpInsertCidade('asadsfsfas',1)) % line 30, file: FrmCidadesCod.php FrmCidades.gravar() % line 32, file: FrmCidadesAcao.php require(C:\wamp\www\CantoDigital\admin\FrmCidadesAcao.php) % line 45, file: index.php
16/06/2011
Natal Lima
IN varId INTEGER(11),
IN varDescricao VARCHAR(60),
IN varUF INTEGER(11)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
IF (exists(select Cid_Id from cidades where (Cid_Id = varId))) THEN
UPDATE
cidades
SET
Cid_Descricao = VarDescricao,
UF_Id = varUF
where (Cid_Id = varId);
ELSE
INSERT INTO
cidades(
Cid_Descricao,
UF_Id)
VALUES(
varDescricao,
varUF);
END IF;
END;
a função em php é:
#Código
/* função para inserir cidades */
function gravar(){
$sql = "CALL SpInsertCidade('".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])";
$this->resultado = $this->con->banco->Execute($sql);
}Sidney, você criou uma procedure que passando três variáveis: (varID, varDescricao e varUF). Mas quando você executa a procedure no PHP você está passando apenas duas. É isso que ele está reclamando. Como o varID provavelmente é inserido automaticamente por trigger, tente alterar sua procedure retirando o varID na linha 2 ou ao executar a function do php, faça o seguinte ajuste:
$sql = "CALL SpInsertCidade('','".$_REQUEST[CID_DESCRICAO]."',$_REQUEST[UF_ID])";
Clique aqui para fazer login e interagir na Comunidade :)