Tratamento de insert / update

Olá pessoal,

Seguinte, ao fazer diversos insert / update, gostaria de saber como fazer o tratamento se houve erro com o BD ou não
Exemplo:
sc_begin_trans();
while ( !$rs->EOF ){
$cLOCCOD = $rs->fields[0];
$cPRDCOD = $rs->fields[1];
sc_exec_sql(“INSERT INTO web_gerencia.tbl_cgpxr
(loccod, prdcod, frpcod)
VALUES
(’”. $cLOCCOD ."’, lpad( ‘". $cPRDCOD ."’, 14 ), ‘". $cFRPCOD ."’)" );
$rs->MoveNext();
}
sc_commit_trans();

Neste caso, ao gravar na tabela, caso haja duplicidade na chave primária, como capturar o erro de retorno, sem que apareça a mensagem na tela para o usuário ?.
Quanto o uso das macros do SC para transações, caso esteja trabalhando com o mesmo BD, é obrigatório fazer este tratamento ?
Entendo, corrijam-me se estiver errado. Quando vou adicionar um novo registro ou gravar algum existente, o correto é tratar o erro gerado pelo BD, e assim seguir com o processamento, pois ler o BD antes para verificar um possível erro não garante que a sequência seja executada, já que o BD está recebendo gravações por outros usuários. O erro a que me refiro é quanto a chave primário, pois outros do ponto de vista de sistema este é tratado antes de gerar o SQL para sua atualização.

Att,

Jocimar

Utilize a macro sc_error_insert.

Esta variável retorna uma string contendo qualquer mensagem de erro do banco de dados, que ocorra ao se tentar inserir um registro. É utilizada quando precisamos tratar estas mensagens. Por exemplo, no caso validações feitas no banco de dados via triggers ou procedures que retornam mensagem.

Ex. 1: conteúdo da variável {sc_erro_insert}, retornando uma mensagem de erro gerada por uma trigger do banco de dados usando mssql.

“[Microsoft][ODBC SQL Server Driver][SQL Server] Você não pode incluir este registro.”

OBS: Para ter acesso ao retorno do erro do banco, veja a macro “sc_error_continue”.

Escopo da Macro

Aplicação formulário
onAfterInsert

Obrigado Guariba!

Jocimar