PL/SQL Numeric or value error: character to number conversion error
<p>Procedure Code:</p>

<pre><code>CREATE OR REPLACE PROCEDURE GetOrder(
p_Order IN NUMBER, 
p_OrderDate OUT DATE, 
p_CusNbr OUT NUMBER, 
p_OrderOut OUT NUMBER, 
p_Name OUT VARCHAR2, 
p_Address OUT VARCHAR2,
p_City OUT VARCHAR2, 
p_State OUT CHAR,
p_Zip OUT NUMBER,
p_Itm OUT NUMBER,
p_Desc OUT VARCHAR2,
p_Qty OUT NUMBER,
p_Price OUT NUMBER) 
AS
v_OrderDate ord.ord_date%type;
v_CusNbr ord.Cus_nbr%type;
v_Order ord.Ord_nbr%type;
v_Name cus.cus_nme%type;
v_Address cus.str_adr%type;
v_City zip.city%type;
v_state zip.st%type;
v_Zip zip.zip%type;
v_Itm itm.itm_nbr%type;
v_Desc itm.ITM_DSC%TYPE;
v_Qty ord_itm.ord_Qty%type;
v_Price itm.ord_itm_price%type;
BEGIN
SELECT O.ORD_NBR, C.CUS_NBR, O.ORD_DATE, C.CUS_NME, C.STR_ADR, Z.CITY, Z.ST, I.ITM_NBR, I.ITM_DSC, OI.ORD_QTY, I.ORD_ITM_PRICE
       INTO
       v_Order, v_CusNbr, v_OrderDate, v_Name, v_Address, v_Zip, v_state, v_Itm, v_Desc, v_Qty, v_Price
FROM ITM I JOIN ORD_ITM OI ON (I.ITM_NBR = OI.ITM_NBR) 
           JOIN ORD O ON (OI.ORD_NBR = O.ORD_NBR)
           JOIN CUS C ON (O.CUS_NBR = C.CUS_NBR)
           JOIN ZIP Z ON (C.ZIP_ADR = Z.ZIP)
WHERE O.ORD_NBR = p_Order;
DBMS_OUTPUT.PUT_LINE('ILLINOIS COMPUTERS');
DBMS_OUTPUT.PUT_LINE('CUSTOMER ORDER FORM');
DBMS_OUTPUT.PUT_LINE(v_Order || v_OrderDate || v_CusNbr);
DBMS_OUTPUT.PUT_LINE('Name: ' || v_Name);
DBMS_OUTPUT.PUT_LINE('Address: ' || v_Address);
DBMS_OUTPUT.PUT_LINE('City: ' || v_City || ' State : ' || v_state || ' Zip: ' || v_Zip);
DBMS_OUTPUT.PUT_LINE('Item No.' || 'Description' || 'Quantity' || 'Price');
DBMS_OUTPUT.PUT_LINE(v_Itm || v_Desc || v_Qty || v_Price);
END GetOrder;
/
</code></pre>

<p>And when I call the procedure: </p>

<pre><code>DECLARE
    p_OrderNbr NUMBER := &amp;ordernumber;
    p_OrderDateOutput   DATE;
    p_CusNbrOutput      NUMBER;
    p_OrderNbrOutput    NUMBER;
    p_NameOutput        cus.cus_nme%type; 
    p_AddressOutput     cus.str_adr%type;
    p_CityOutput        zip.city%type; 
    p_StateOutput       CHAR;
    p_ZipOutput         NUMBER;
    p_ItmOutput         NUMBER;
    p_DescOutput        itm.itm_dsc%type;
    p_QtyOutput         NUMBER;
    p_PriceOutput       NUMBER;
begin
    GetOrder(p_OrderNbr, 
    p_OrderDateOutput, 
    p_CusNbrOutput, 
    p_OrderNbrOutput,
    p_NameOutput,
    p_AddressOutput,
    p_CityOutput,
    p_StateOutput, 
    p_ZipOutput,
    p_ItmOutput,
    p_DescOutput,  
    p_QtyOutput, 
    p_PriceOutput);
END;
/
</code></pre>

<p>I'm getting </p>

<blockquote>
  <p>ORA-06502 error: numeric or value error: character to number
  conversion error.</p>
</blockquote>

<p>I believe all my parameters are in order so I'm not getting conflicting variable assignments.</p>

<p>I ran this query seperately to make sure I'm getting the right output and it works fine.</p>

<pre><code>SELECT O.ORD_NBR, C.CUS_NBR, O.ORD_DATE, C.CUS_NME, C.STR_ADR, Z.CITY, Z.ST, I.ITM_NBR, I.ITM_DSC, OI.ORD_QTY, I.ORD_ITM_PRICE
       --INTO
       --v_Order, v_CusNbr, v_OrderDate, v_Name, v_Address, v_Zip, v_state, v_Itm, v_Desc, v_Qty, v_Price
FROM ITM I JOIN ORD_ITM OI ON (I.ITM_NBR = OI.ITM_NBR) 
           JOIN ORD O ON (OI.ORD_NBR = O.ORD_NBR)
           JOIN CUS C ON (O.CUS_NBR = C.CUS_NBR)
           JOIN ZIP Z ON (C.ZIP_ADR = Z.ZIP)
WHERE O.ORD_NBR = 100;
</code></pre>