Como rodar uma procedure dentro do scriptcase

Pessoal,
Preciso executar uma procedure dentro da aplicação em um bloco PHP, mas estou com dificuldade em achar a documentação no site do scriptcase, preciso rodar a procedure que terá parametros de entrada e saida e um dataset de saida.

Alguem pode postar um exemplo COMPLETO?

Declare @codigo varchar(20);
Declare @retorno varchar(20);
exec dbo.stp_avaliacao @codigo=’.A’, @retorno=@retorno output
–select top 1 * from dbo.t_avaliacao order by 1 desc
select @retorno

Create Procedure dbo.stp_avaliacao
@codigo varchar(20),
@retorno varchar(20) output
As
Begin
set @retorno = ‘X’ + @codigo ;
insert into dbo.T_Avaliacao values (@retorno) ;
select top 1 * from dbo.t_avaliacao order by 1 desc
return;
End

Esta na documentação:

https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/01-visao-geral/#sc_exec_sql

Colega,

Na documentação…
Onde fala como fazer para passar os parametros?
Onde fala como fazer para recuperar os parametros?

Essa documentação e muito ruim.

se você fosse executar a stored procedure direto no banco como usaria a instrução?

Declare @codigo varchar(20);
Declare @retorno varchar(20);
exec dbo.stp_avaliacao @codigo=’.A’, @retorno=@retorno output
–select top 1 * from dbo.t_avaliacao order by 1 desc
select @retorno

jogue tudo dentro de uma variável php e coloca a variável na macro:

$variavel=" instrução sql";
sc_exec_sql($variavel);

se a proc tiver retorno use sc_lookup em vez de sc_exec_sql.

Mesmo assim não retorna nada.

$qry = “stp_avaliacao”;
//sc_exec_sql( $qry) ;

$qry = “call dbo.stp_avaliacao @codigo=’.A’ , @retorno output”;
sc_lookup(result, $qry) ;

if(empty($result)){
ECHO ‘VAZIO’;
}

var_dump($result);
//echo $result[0][0];

Analise o debug

Como analisar o debug?

Não sabe colocar a aplicação em modo debug?

Não.

Form menu -> Application -> Settings -> ERROR SETTINGS -> Debug Mode: Yes

Sim.

Mesmo assim, não consigo achar o problema.

(pdo-dblib): call stp_avaliacao(‘A’,@retorno)
20018: Incorrect syntax near ‘A’. [20018] (severity 15) [(null)]
ADOConnection._Execute(call stp_avaliacao(‘A’,@retorno) , false) % line 1149, file: adodb.inc.php
ADOConnection.Execute(call stp_avaliacao(‘A’,@retorno) ) % line 1347, file: ReativarAssinatura_apl.php
ReativarAssinatura_apl.sc_btn_Atualizar() % line 971, file: ReativarAssinatura_apl.php
ReativarAssinatura_apl.ini_controle() % line 1001, file: ReativarAssinatura_apl.php
ReativarAssinatura_apl.controle() % line 1995, file: index.php

Fazem anos que não mexo com MSSQL, mas se não me engano a chamada a SP se da pelo comando EXEC, não?

Sim em vez de call usamos exec, contudo mesmo assim não roda.
Já tentei com (), sem ().
Tentei de varias formas, se for tabela funciona, se for procedure não funciona.

(pdo-dblib): exec stp_avaliacao ‘A’,@retorno

Resolvido.

Vc estava certo “colocar tudo dentro da variável”.

$qry = "Declare @retorno varchar(20); exec stp_avaliacao ‘A’,@retorno output ";

Veja:

https://forum.scriptcase.com.br/index.php/topic,17171.msg89889.html#msg89889