Dinamik olarak bazı sorgular oluşturmak için gereken bir PL/SQL yordamını yazıyorum, bunlardan biri parametre olarak alınan bir sorgudaki sonuçları kullanarak geçici bir tablo oluşturmayı içerir.Bu sorguyu neden EXECUTE IMMEDIATE ile çalıştırmak başarısız oluyor?
CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;
O hatta böyle olduğu gibi çok basit sorgu ile doğru derler:
BEGIN
sqlout('SELECT * FROM DUAL');
END;
BT ORA-00911: invalid character
atar. Oluşturulan sorguyu el ile çalıştırırsam doğru şekilde çalışır. Bu noktada sorunun nedenini belirleyebiliyorum.
Ben proc uygulamanız tarafından olayların normal akışı içinde çalıştırılıyor değil umut ... dinamik DDL (örneğin yeni bir ortam ayarlama) yönetici komut için sadece gerçekten uygundur. –