I am in a crunch and need to covert this Oracle statement to MSSQL. Is
there any Oracle/MSSQL experts out there that can help me? I do not
understand the syntax enough to modify this.
Thanks so much for any assistance. Here is the procedure.
CREATE PROCEDURE UPD_ACTIVITY IS
CURSOR ACT_cur1
IS
SELECT DISTINCT A.ACCT_NUM, A.DUE_DATE
FROM TBLCACSDAILYACTIVITIES A ; /* this picks the unique
combination of acct and date*/
tot_pay number ;
rec_upd varchar2(1);
todays_date date;
BEGIN
dbms_output.put_line('inside upd_activity ');
SELECT SYSDATE INTO todays_date FROM DUAL;
FOR ACT_CUR_REC1 IN ACT_CUR1
LOOP
rec_upd := 'N';
DECLARE
CURSOR ACT_CUR2 IS
SELECT B.ACCT_NUM,
B.ACTIVITY_DATE,B.PROMISE_AMT_1,B.PROMISE_STATUS,
B.TOTAL_DOLLARS_COLL
FROM TBLCACSDAILYACTIVITIES B
WHERE B.ACCT_NUM = ACT_CUR_REC1.ACCT_NUM
AND B.DUE_DATE = ACT_CUR_REC1.DUE_DATE
ORDER BY B.ACTIVITY_DATE
FOR UPDATE OF B.PROMISE_STATUS,B.TOTAL_DOLLARS_COLL
NOWAIT;
BEGIN
dbms_output.put_line('inside upd_activity1111 ');
FOR ACT_CUR_REC2 IN ACT_CUR2
LOOP
BEGIN
SELECT SUM(C.PAY_AMT) into tot_pay
FROM TBLCACSDAILYPAYMENTS C
WHERE C.ACCT_NUM = ACT_CUR_REC2.ACCT_NUM
AND C.ACTIVITY_DATE >= ACT_CUR_REC2.ACTIVITY_DATE
AND C.ACTIVITY_DATE < ACT_CUR_REC2.ACTIVITY_DATE+10;
dbms_output.put_line('tot_pay =');
IF tot_pay >= .9 * ACT_CUR_REC2.PROMISE_AMT_1 THEN
IF rec_upd = 'N' THEN /* recs have not bee updated for promise
status*/
UPDATE TBLCACSDAILYACTIVITIES
SET PROMISE_STATUS = 'PK',
TOTAL_DOLLARS_COLL = tot_pay
WHERE CURRENT OF ACT_CUR2;
rec_upd := 'Y';
ELSIF rec_upd = 'Y' THEN
UPDATE TBLCACSDAILYACTIVITIES
SET PROMISE_STATUS = 'IP'
WHERE CURRENT OF ACT_CUR2;
END IF;
ELSIF tot_pay < .9 * ACT_CUR_REC2.PROMISE_AMT_1 THEN
IF (ACT_CUR_REC2.ACTIVITY_DATE+10) > todays_date THEN
UPDATE TBLCACSDAILYACTIVITIES
SET PROMISE_STATUS = 'OP'
WHERE CURRENT OF ACT_CUR2;
BREAK;
ELSE
UPDATE TBLCACSDAILYACTIVITIES
SET PROMISE_STATUS = 'PB'
WHERE CURRENT OF ACT_CUR2;
END IF;
END IF;
END;
END LOOP; /* end of ACT_CUR_REC2 loop */
END;
END LOOP; /*end of ACT_CUR_REC1 */
END ; /* end of proc */
/ 1 7011
Philip Mette wrote: I am in a crunch and need to covert this Oracle statement to MSSQL. Is there any Oracle/MSSQL experts out there that can help me? I do not understand the syntax enough to modify this.
I assume you have some experience with MSSQL's stored procedures.
Thanks so much for any assistance. Here is the procedure.
CREATE PROCEDURE UPD_ACTIVITY IS CURSOR ACT_cur1 IS SELECT DISTINCT A.ACCT_NUM, A.DUE_DATE FROM TBLCACSDAILYACTIVITIES A ; /* this picks the unique combination of acct and date*/
declare ACT_cur1 cursor local for
SELECT DISTINCT A.ACCT_NUM, A.DUE_DATE
FROM TBLCACSDAILYACTIVITIES A
tot_pay number ; rec_upd varchar2(1); todays_date date;
declare @tot_pay float
declare @rec_upd varchar(1)
declare @todays_date datetime
BEGIN dbms_output.put_line('inside upd_activity ');
print 'inside upd_activity '
SELECT SYSDATE INTO todays_date FROM DUAL;
set @todays_date = (select getdate())
FOR ACT_CUR_REC1 IN ACT_CUR1 LOOP
No exact equivalence in MSSQL, you would do something like
open ACT_cur1
while (1=1)
begin
fetch next
from ACT_cur1
into @C1_ACCT_NUM, @C1_DUE_DATE /*declare first*/
if (@@fetch_status <> 0) break
rec_upd := 'N';
set @rec_upd = 'N'
DECLARE CURSOR ACT_CUR2 IS SELECT B.ACCT_NUM, B.ACTIVITY_DATE,B.PROMISE_AMT_1,B.PROMISE_STATUS, B.TOTAL_DOLLARS_COLL FROM TBLCACSDAILYACTIVITIES B WHERE B.ACCT_NUM = ACT_CUR_REC1.ACCT_NUM AND B.DUE_DATE = ACT_CUR_REC1.DUE_DATE ORDER BY B.ACTIVITY_DATE FOR UPDATE OF B.PROMISE_STATUS,B.TOTAL_DOLLARS_COLL NOWAIT;
Dont know the equivalence for NOWAIT, try without.
besides that, declare as the previous cursor
BEGIN dbms_output.put_line('inside upd_activity1111 '); FOR ACT_CUR_REC2 IN ACT_CUR2 LOOP BEGIN
same as before
SELECT SUM(C.PAY_AMT) into tot_pay FROM TBLCACSDAILYPAYMENTS C WHERE C.ACCT_NUM = ACT_CUR_REC2.ACCT_NUM AND C.ACTIVITY_DATE >= ACT_CUR_REC2.ACTIVITY_DATE AND C.ACTIVITY_DATE < ACT_CUR_REC2.ACTIVITY_DATE+10;
set @tot_pay = (
SELECT SUM(C.PAY_AMT)
FROM TBLCACSDAILYPAYMENTS C
WHERE C.ACCT_NUM = @C2_ACCT_NUM /*NB var*/
AND C.ACTIVITY_DATE >= @C2_ACTIVITY_DATE
AND C.ACTIVITY_DATE < @C2_ACTIVITY_DATE+10
)
dbms_output.put_line('tot_pay ='); IF tot_pay >= .9 * ACT_CUR_REC2.PROMISE_AMT_1 THEN
if (tot_pay >= .9 * @PROMISE_AMT_1)
begin
IF rec_upd = 'N' THEN /* recs have not bee updated for promise status*/ UPDATE TBLCACSDAILYACTIVITIES SET PROMISE_STATUS = 'PK', TOTAL_DOLLARS_COLL = tot_pay WHERE CURRENT OF ACT_CUR2; rec_upd := 'Y'; ELSIF rec_upd = 'Y' THEN
end
else if (@rec_upd = 'Y')
begin
UPDATE TBLCACSDAILYACTIVITIES SET PROMISE_STATUS = 'IP' WHERE CURRENT OF ACT_CUR2; END IF; ELSIF tot_pay < .9 * ACT_CUR_REC2.PROMISE_AMT_1 THEN IF (ACT_CUR_REC2.ACTIVITY_DATE+10) > todays_date THEN UPDATE TBLCACSDAILYACTIVITIES SET PROMISE_STATUS = 'OP' WHERE CURRENT OF ACT_CUR2; BREAK; ELSE UPDATE TBLCACSDAILYACTIVITIES SET PROMISE_STATUS = 'PB' WHERE CURRENT OF ACT_CUR2; END IF; END IF; END; END LOOP; /* end of ACT_CUR_REC2 loop */ END; END LOOP; /*end of ACT_CUR_REC1 */ END ; /* end of proc */ / This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Jeff Lambert |
last post by:
We have a Windows client application written in delphi that connects
to Oracle 8i w/ ADO. We accumulate a lot of SQL statements in a loop
and finally send the strings list to be executed.
What I...
|
by: jonathan |
last post by:
hey all,
I realize that this question might pop up from time to time, but I
haven't seen it a while and things might of changed, so -
Right now (July 2004) how does mysql stand up in...
|
by: English Teacher |
last post by:
Which would be a more useful relational database server to learn
nowadays: MS SQL SERVER or ORACLE?
Thanks!
|
by: Sudhesh Nayak |
last post by:
Hi,
I have an Oracle (8.1) & a SQL Server 2000 database with
Production data. There are situations when I need data from both the
databases. My first choice was to link Oracle to SQL and run DTS...
|
by: James Alexander Starritt |
last post by:
I also posted similarly in mailing.database.mysql
I have created a rather large (60 table database) website dealio in PHP that
works with MS SQL Server, Oracle, MySQL and presumably any other...
|
by: Pardhasaradhy |
last post by:
Hello,
I have a linked server to oracle 7.1 from SQL 2000. when I try to
execute simple select statement which returns one row of data using
openquery is not fetching the data. After 30 minutes...
|
by: jrefactors |
last post by:
I want to know the differences between SQL Server 2000 stored
procedures and oracle stored procedures? Do they have different
syntax? The concept should be the same that the stored procedures...
|
by: prunoki |
last post by:
Hello,
I am an SQL server newbie. Our company has a massive application
written in PL/SQL. I need to port parts of it to SQL Server.
- Which SQL server version should I choose, to have a...
|
by: becksinthecity |
last post by:
I'm trying to convert the below SQL into Oracle but am having some issues with the variable declarations.
SQL commands
declare @sqlstring varchar(500)
select @sqlstring= (select ...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
| |