2013-02-02 2 views
0

학교용으로 매우 간단한 PL/SQL 프로그램을 수행하고 있습니다. 그것은 꽤 쉽습니다.하지만 저는 개념이 빠져 있다고 생각합니다. 나는 내가하고있는 것을 보여줄 것이며 쉬운 대답을 요구하지 않을 것이다. DBMS_OUTPUT.PUT_LINE의 개념과 직각 프리즘의 볼륨 또는 풀을 계산하기 위해 선언 한 BIND 변수를 이해하고 싶습니다. 난 그냥 다시 사용자에게 적절하게 선언하지 않았습니다. 사용자에게 OUTPUT에 대한 정확한 정보를 찾는 데 어려움을 겪고 있습니다. INPUT 및 put_line에 대해 좀 더 배우고 있습니다.계산 입력 및 출력과 함께 PL/SQL에서 바인딩 변수를 학습하는 방법 DBMS_OUTPUT.PUT_LINE

그래서 v = lwh로 계산하십시오. 필자는 PL/SQL에 내장 된 dbms_output 함수를 사용하여 put_line에 선언 한 변수를 선언했습니다. 나는 이러한 변수들의 계산을 적용했다. dbms put line statement를 다시 계산하여 변수 dimension이 표시된 계산 및 concact 문을 표시하고 최선을 다하는 방법을 보여줍니다. 이 프로그램은 C 언어와 Ruby로 보았지만 Oracle Developer와 PL/SQL에서는 그렇지 않습니다.

C Language Calculate Surface Area

Java Program for Rectangular Prism

내 스크립트를 보여 내가 더 잘 배우고 올바른 궤도에있어 경우 그냥 확인, 내가 잘못 뭘하는지 볼 수 있습니다

. 치수를 표시하고이를 표시하기 위해 conc 문을 수정하는 데 문제가 있습니다. 출력을 사용자에게 구체적으로 표시하는 방법.

감사합니다.

~ 직사각형 프리즘 수영장의 볼륨을 계산하는 PL/SQL 블록을 작성하십시오. 차원은 Y 인드 (대체) 변수의 도움으로 제공되어야합니다. 프리즘의 볼륨이 계산 된 후 화면에 치수와 볼륨을 표시하십시오.

V = LWH는

SET SERVEROUTPUT ON 
DECLARE 
    d_length NUMBER(7); 
    d_height NUMBER(7); 
    d_width  NUMBER(7); 
    d_volume NUMBER(15); 

BEGIN 

    DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || (&d_length)); 

    DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || (&d_height)); 

    DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || (&d_width)); 

    d_volume := d_length * d_height * d_width; 

    DBMS_OUTPUT.PUT_LINE(
    'The rectangular prism volume for the swimming pool is: ' 
    || (d_volume)); ---don't know how to get output to user 

    DBMS_OUTPUT.PUT_LINE(
    'The dimensions of the swimming pool are ' || ; ---missing code here 


END; 
/
+0

이것이 약간 도움이 될 것 같습니다. 아직 출력 작업 중이지만이 웹 사이트는 제가 작업하는 동안 도움이 될 것입니다. 또한 내가 찾은 훌륭한 참조 사이트. Java2s.com 및 Oracle 참조와 함께 http://www.tutorialspoint.com/plsql/plsql_constants.htm. – MeachamRob

답변

3

Bind variablessubstitution variables는 다른 것, 그래서 문제의 표현은 잘못된 것입니다. 그리고 그것은 바인드 변수의 SQL * Plus 버전 일뿐입니다. 파서에 약간 다른 (또는 덜 명백한) 의미를 가질 수 있습니다.

필자는 PL/SQL 변수를 SQL * Plus 대체 변수와 혼동하고 있습니다. &d_length을 참조 할 때 대체 변수를 정의하면 사용자는 그 시점에서 그 값에 대해 프롬프트됩니다. 그러나 PL/SQL DECLARE 블록의 d_length과 완전히 독립적입니다.

당신은 당신이 차단 시작하기 전에 사용자로부터 값을 얻을 수있는 깔끔한 방법에 대한 ACCEPT 명령을 볼 수 있습니다,하지만 당신은 너무 이런 식으로 작업을 수행 할 수 있습니다 마지막을 원하는

SET SERVEROUTPUT ON 
DECLARE 
    d_length NUMBER := &q_length; 
    d_height NUMBER := &q_height; 
    d_width  NUMBER := &q_width; 
    d_volume NUMBER; 
BEGIN 
    DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || d_length); 
    DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || d_height); 
    DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || d_width); 

    d_volume := d_length * d_height * d_width; 

    DBMS_OUTPUT.PUT_LINE(
     'The rectangular prism volume for the swimming pool is: ' 
      || d_volume); 

    DBMS_OUTPUT.PUT_LINE(
     'The dimensions of the swimming pool are ' || '?'); 
END; 
/

확실하지 않음 보여줄 산출의 선; 이미 표시된 세 가지 차원과 다른 것입니까?

당신은 VARIABLE command로 정의하여 바인드 변수와 함께 할도 수 :

사람들은 바인드 변수이기 때문에 d_length, d_heightd_width가,이 버전의 대장로 시작되는주의하는 것이
SET SERVEROUTPUT ON 
VARIABLE d_length NUMBER; 
VARIABLE d_height NUMBER; 
VARIABLE d_width NUMBER; 

DECLARE 
    d_volume NUMBER; 
BEGIN 
    :d_length := &q_length; 
    :d_height := &q_height; 
    :d_width := &q_width; 

    DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || :d_length); 
    DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || :d_height); 
    DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || :d_width); 

    d_volume := :d_length * :d_height * :d_width; 

    DBMS_OUTPUT.PUT_LINE(
     'The rectangular prism volume for the swimming pool is: ' 
      || d_volume); 

    DBMS_OUTPUT.PUT_LINE(
     'The dimensions of the swimming pool are ' || '?'); 
END; 
/

. 그러나 d_volume은 PL/SQL 블록에서 여전히 선언 되었기 때문에 아닙니다.그리고 실제 값은 여전히 ​​대체 변수로서 사용자로부터 검색됩니다. 이것은 다소 복잡합니다. 변수를 바인드하는 것은 실제로 여기에 아무 것도 추가하지 않습니다.

+0

나에게 잘 어울리는데, 이것은 애매한 질문에 대해 생각했던 것과 일치하도록 변경 한 일부 코드입니다. 도와 주셔서 감사합니다. d_volume : = d_length * d_height * d_width; DBMS_OUTPUT.PUT_LINE ( '풀의 직각 프리즘 볼륨은' || d_volume || '입방 피트'입니다. ); DBMS_OUTPUT.PUT_LINE ( '수영장의 크기가'|| d_length || || d_height || || d_width || '피트'피트 ' '. '); END; / – MeachamRob

+0

BIND VARIABLE CODE의 변수 섹션을 실행할 때 볼륨 계산 및 치수가 인쇄되지 않습니다. 코드의 해당 부분을 수정하는 방법을 모르겠습니다. 스크립트를 실행하면 바인드 변수가 인쇄되지 않습니다. 내 텍스트는 END 후에 인쇄해야한다고 말하지만, 그것은 나에게도 도움이되지 못했다. SQL 코딩의 다른 버전에 따라 다르다는 것을 이해하고 대체 변수를 올바르게 가져 왔습니다. 그러나 BIND 변수가 제대로 인쇄하지 못했습니다. 왜 그래도. 코드 VARIABLE 부분의 두 번째 버전입니다. – MeachamRob

+0

@MeachamRob - 무슨 뜻인지 잘 모르겠지만, 나에게 잘 돌아 간다 .... 아직도'set serveroutput on' 단계를 밟았습니까? –

관련 문제