Olá Dave,
Não, você não precisa de VALORES se usar a sintaxe INSERT...SELECT.. pois os valores de inserção são fornecidos a partir da seleção. Se utilizar a sintaxe de valores, você estará fornecendo os dados 'manualmente', geralmente a partir de literais ou variáveis.
Depende da situação, mas você poderia tentar algo assim....
BEGIN
DECLARE varSaveCode INTEGER;
INSERT INTO A_Sales_Ledger(xxx, yyyy, Customer_ID)
SELECT xxx, yyy, Customer_ID FROM Customers WHERE Cust_Name LIKE '%Unique String%';
SET varSaveCode = SQLCode;
IF varSaveCode <> 0 THEN
-- Algum tratamento de erros apropriado, talvez....
MESSAGE 'Oops - ocorreu um erro, código '||varSaveCode A CONSOLA;
ROLLBACK;
ELSE
COMMIT;
END IF;
END
-- Nota, código não testado
- Acredito que MESSAGE pode lidar com a mistura de tipos
(Você poderia tentar MESSAGE ao CLIENTE - depende da capacidade do seu software cliente para capturar a mensagem.)
HTH, Paul