Hi, I am a SQL Server developer. I have the following T-SQL script that needs to be converted to run on Oracle. I don't have access to an Oracle system and have no experience of PL/SQL.
I would be grateful if anyone could highlight any other things that look like they won't work in Oracle (I don't expect anyone to rewrite it just but if anything looks glaringly wrong would be handy to know), as I need to send this code untested (and will get aggro if it doesn't work first time).
I know that I will have to change the ISNULL(x,y) to NVL(x,y).
Any help much appreciated.
There are two ways to write error-free programs; only the third one works.
I would be grateful if anyone could highlight any other things that look like they won't work in Oracle (I don't expect anyone to rewrite it just but if anything looks glaringly wrong would be handy to know), as I need to send this code untested (and will get aggro if it doesn't work first time).
I know that I will have to change the ISNULL(x,y) to NVL(x,y).
Any help much appreciated.
Code:
SELECT
PROJ.NAME AS PROJECTNAME,
CI.PROJECTNUMBER,
CI.CATEGORYCODE,
ISNULL(CI.VALUE_NON_VAT,0) AUTHORISATION,
ISNULL(O.NETORDERVALUE,0) ORDERS,
ISNULL(P.NETPAYMENTS,0) ORDERSPAID,
ISNULL((O.NETORDERVALUE - P.NETPAYMENTS),0) AS ORDERSOUTSTANDING,
ISNULL((CI.VALUE_NON_VAT - O.NETORDERVALUE),0) AS BALANCEOFBUDGET
FROM
IMPPROJECTS PROJ
LEFT JOIN
(SELECT
PROJECTNUMBER,
CATEGORYCODE,
SUM (VALUE_NON_VAT) VALUE_NON_VAT
FROM
(
SELECT
PROJECTNUMBER,
CATEGORYCODE,
ISNULL(VALUE_NON_VAT,0) VALUE_NON_VAT
FROM IMPCONTRACTITEMS
UNION ALL
SELECT
PROJECTNUMBER,
CATEGORYCODE,
ISNULL(VALUE_NON_VAT,0) VALUE_NON_VAT
FROM IMPSUBCONTRACTITEMS
)AS ICI
GROUP BY ICI.PROJECTNUMBER, ICI.CATEGORYCODE
) AS CI
ON PROJ.PROJECTNUMBER = CI.PROJECTNUMBER
LEFT JOIN
(
SELECT
PROJECTNUMBER,
CATEGORYCODE,
SUM(ISNULL(NETTVALUE,0)) AS NETORDERVALUE
FROM IMPORDERS
GROUP BY
PROJECTNUMBER,
CATEGORYCODE
) AS O
ON CI.PROJECTNUMBER = O.PROJECTNUMBER
AND CI.CATEGORYCODE = O.CATEGORYCODE
LEFT JOIN
(
SELECT
PAY.PROJECTNUMBER,
O.CATEGORYCODE,
SUM(ISNULL(PAY.NETTVALUATION,0)) AS NETPAYMENTS
FROM
IMPPAYMENTS PAY
LEFT JOIN IMPORDERS O
ON PAY.ORDERNO = O.ORDERNO
GROUP BY
PAY.PROJECTNUMBER,
O.CATEGORYCODE
) AS P
ON CI.PROJECTNUMBER = P.PROJECTNUMBER
AND CI.CATEGORYCODE = P.CATEGORYCODE
WHERE CI.PROJECTNUMBER = (ISNULL(@PNO,CI.PROJECTNUMBER))
AND PROJ.NAME = (ISNULL(@PNA,PROJ.NAME))
ORDER BY CI.PROJECTNUMBER
There are two ways to write error-free programs; only the third one works.