Ir para conteúdo

POWERED BY:

Arquivado

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

ademilson Moreira

Executar Procedure

Recommended Posts

Pessoal preciso de uma ajuda.

 

Criei a seguinte procedure no banco

CREATE PROCEDURE QTD_LOC

AS BEGIN

/* Procedure body */

update "Tbl006" set "Tbl006"."Qtd_loc" = 0;

END

 

Consigo executar ela diretamente no banco digitando execute procedure qtd_loc

Como faço para chamar e executar ela através do delphi.

Coloquei o componente SQLStoredProc (dbexpress) porem quanto tento executar me da a seguinte mensagem de erro "Cursor Not Returned from query"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chama a procedure passando como sql para o TQuery algo como "Exec QTD_LOC " e dá um execSQL .

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

Fiz isto usando o componente Query da paleta dbExpress, mas continua dando mensagem de erro "Cursor Not Returned from query"

Vi que funcionou, pois o campo do banco foi alterado.

O problema e como inibir esta mensagem, andei lendo e pelo que parece tenho que inibir os retornos da procedure, ja que neste caso não dou nenhum valor de retorno.

Um outro modo seria eu retornar algum valor... tipo executado com sucesso ou não... mas não sei como fazer isto.

Agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está seu código? Em que momento dá o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Coloquei o componente SQLStoredProc da paleta dbExpress

2 - SqlConection = Conexao

3 - Stored Procedure Name = Nome da procedure

4 - Quando chamo a procedure alterando a propriedade active para True... da o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Coloquei o componente SQLStoredProc da paleta dbExpress

2 - SqlConection = Conexao

3 - Stored Procedure Name = Nome da procedure

4 - Quando chamo a procedure alterando a propriedade active para True... da o erro.

 

Pessoal, desculpe a insistência, mas alguem ja passou por este problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Using stored procedure-type datasets

 

How your application uses a stored procedure depends on how the stored procedure was coded, whether and how it returns data, the specific database server used, or a combination of these factors.

 

In general terms, to access a stored procedure on a server, an application must:

 

1 Place the appropriate dataset component in a data module or on a form, and set its Name property to a unique value appropriate to your application.

2 Identify the database server that defines the stored procedure. Each stored procedure-type dataset does this differently, but typically you specify a database connection component:

 

For TStoredProc, specify a TDatabase component or a BDE alias using the DatabaseName property.

For TADOStoredProc, specify a TADOConnection component using the Connection property.

For TSQLStoredProc, specify a TSQLConnection component using the SQLConnection property.

 

For TIBStoredProc, specify a TIBConnection component using the Database property.

For information about using database connection components, see Connecting to databases

 

3 Specify the stored procedure to execute. For most stored procedure-type datasets, you do this by setting the StoredProcName property. The one exception is TADOStoredProc, which has a ProcedureName property instead.

4 If the stored procedure returns a cursor to be used with visual data controls, add a data source component to the data module, and set its DataSet property to the stored procedure-type dataset. Connect data-aware components to the data source using their DataSource and DataField properties.

 

5 Provide input parameter values for the stored procedure, if necessary. If the server does not provide information about all stored procedure parameters, you may need to provide additional input parameter information, such as parameter names and data types. For information about working with stored procedure parameters, see Working with stored procedure parameters.

 

6 Execute the stored procedure. For stored procedures that return a cursor, use the Active property or the Open method. To execute stored procedures that do not return any results or that only return output parameters, use the ExecProc method at runtime. If you plan to execute the stored procedure more than once, you may want to call Prepare to initialize the data access layer and bind parameter values into the stored procedure. For information about preparing a query, see Preparing stored procedures.

 

7 Process any results. These results can be returned as result and output parameters, or they can be returned as a result set that populates the stored procedure-type dataset. Some stored procedures return multiple cursors. For details on how to access the additional cursors, see Fetching multiple result sets.

 

Fonte: Help Delphi 7

Leia com atenção o que diz no campo negritado e veja se não é ai o seu problema.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde ademilson,

 

referente ao erro não sei te dizer o que podes ser, mas referente a mensagem de "executado com sucesso" faça o seguinte:

Application.MessageBox('Mensagem','Titulo da mensagem',tipo de botão*)
*o tipo de botão é defindo a partir de números

 

então ficaria

 

Application.MessageBox('Atualização efetuada com sucesso','Atualização de cadastro',0)

OBS.: Tem uma tabela com os valores de cada botão, o número 0 é para o botão 'OK'.

 

Bom, dai se você quiser implementar mais um pouco, você pode fazer com que assim que seja clicado no botão OK, o form de atualização feixe:

 

if(Application.MessageBox('Mensagem','Titulo da mensagem',botão OK*)) = Precionar botão OK** then
 begin
   form de atualização.Close;
 end;

** assim como o botão, o precionamento do mesmo é definido por numeros

 

ficaria assim a validação:

 

if(Application.MessageBox('Atualização efetuada com sucesso','Atualização de cadastro',0)) = 1 then
 begin
   formatualizar.Close;
 end;

E está feita a sua mensgem de resposta ao cliente.

 

Atenciosamente,

 

Diego Maciel Dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo penei mas descobri como resolver.. eu ao invez de chamar a procedure do banco passo pro string no delphi e mando executar:

No botão o aonde voce foi chamar a procedure:

Cons

string_sql:= ('trucate clientes');

begin

 

SQLConnection1.ExecuteDirect(sql_apaga_vendaproduto);

end;

pronto voala, :thumbsup: você tbm pode salvar a procedure no banco e chama-la por ai, agora quanto a função nao sei...por que tenquepassar parametros.

abraços!

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.