2015-10-25 1 views
1

У меня возникла проблема относительно сканировать значение в процедуре pl/sql. Когда я выполнил процедуру, он игнорирует a: = '& a';.Как узнать значение в процедуре pl/sql?

Процедура тела

create or replace PROCEDURE Testing 
IS 
a VARCHAR2(3); 
BEGIN 
    DBMS_OUTPUT.PUT_LINE('Enter a : '); 
    a:='&a'; 
END Testing; 

Процедура Вызов

SET SERVEROUTPUT ON; 
cl scr; 
Execute Testing; 

Выход

PL/SQL procedure successfully completed. 

Enter a : 

Может кто-нибудь помочь мне, пожалуйста !?

+0

Что вы 'параметр define' (используйте' show' в SQL Developer для проверки)? PL/SQL не предназначен для взаимодействия с пользователем, а подсказка о значениях необычна и не очень практична в хранимой процедуре. Вы, конечно, не можете использовать 'dbms_output' для приглашения, потому что это (как видите) показано после завершения выполнения блока. Вы можете использовать команды 'prompt' и' accept' client, но не из PL/SQL. Трудно сказать, что вы действительно хотите сделать. –

+0

Я получаю вашу мысль, но команда ** SHOW ** не работает. Я прошел через [это] (http://docs.oracle.com/javadb/10.8.3.0/tools/rtoolsijcomrefshow.html). –

+0

Эта ссылка не для Oracle Database; попробуйте [этот] (http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve041.htm#sthref2258). И ['set define' command] (http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_five.htm#CACIIEDF), чтобы установить его в' & ', если он выключен. –

ответ

2

В SQL * Plus у нас есть приглашение и принять синтаксис, но нет прямого способа сделать PL/SQL интерактивным без использования PHP, Apex, Java, Scripting. Я даю вам пример сценариев.

например. В Windows пакет, следующий код поможет.

1) Код для процедуры тестирования является то же, что у вас есть

create or replace PROCEDURE Testing (arg varchar2) 
IS 
a VARCHAR2(3); 
BEGIN 
a:=arg; 
    DBMS_OUTPUT.PUT_LINE('Value of a : '||a); 

END 

2) test.bat

sqlplus nd211/nd211 @Testing.sql te1 
sqlplus nd211/nd211 @Testing.sql te4 

3) Testing.sql

set serveroutput on 
exec Testing('&1'); 
exit; 

тестирование; /

4) Пример вывода

Value of a : te1 

PL/SQL procedure successfully completed. 


Value of a : te4 

PL/SQL procedure successfully completed. 
+1

Дайте мне знать, если это ответит на ваш вопрос –

+0

Да! Это то, что я хотел сделать. Спасибо друг. –

Смежные вопросы