Focal Point
[CLOSED] SQL Server Store Procedures

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/6467005826

February 04, 2013, 12:29 AM
MariaD
[CLOSED] SQL Server Store Procedures
I'm having trouble calling an Store Procedure from a fex. The store procedure has 3 parameters and based on those I prepare the data in SQL in the store procedure.
I have tried several ways but I'm not getting any results.
This is what I have:
ENGINE SQLMSS SET DEFAULT_CONNECTION ent-vocdvdig01\QA
SQL SQLMSS PREPARE SQLOUT FOR
SQL SQLMSS SET SERVER ENT-VOCDVDIG01/QA
SQL SQLMSS EX usp_VD_VIDEO_REPORT @STARTING='20120103',@REP_INT=1,@IN_CPSOURCE='NL';
RUN
TABLE FILE SQLOUT
PRINT *
ON TABLE PCHOLD AS RPTHLD
END

Could somebody let me know what is wrong with this code?
Thanks,
MMD

This message has been edited. Last edited by: Kerry,


WebFOCUS 7.6
Windows, All Outputs

February 04, 2013, 07:35 AM
FrankDutch
Looks rather good, what does it give you as result?

Did you try adding some error handling code?
Maybe add the first line of report with
-&ECHO=ALL;

And REMOVE the line that says
ON TABLE PCHOLD AS RPTHLD
And add instead
WHERE RECORDLIMIT EQ 100

Tel me what you get




Frank

prod: WF 7.6.10 platform Windows,
databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7
test: WF 7.6.10 on the same platform and databases,IE7

February 04, 2013, 09:18 AM
MariaD
Frank,
Thanks for responding to my message.
This is what I have now and the output is as follows:
&ECHO=ALL;
SQL SQLMSS SET SERVER ENT-VOCDVDIG01/QA
SQL SQLMSS
EX usp_VD_VIDEO_REPORT @STARTING=20120103,@REP_INT=1,'@IN_CPSOURCE'='VPC';
RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100
END
And the Output message is:
0 ERROR AT OR NEAR LINE 13 IN PROCEDURE ADHOCRQ FOCEXEC *
(FOC205) THE DESCRIPTION CANNOT BE FOUND FOR FILE NAMED: SQLOUT
BYPASSING TO END OF COMMAND

I have 3 parameters: @STARTING - should be a date
@REP_INT - should be an integer and @IN_CPSOURCE which should be a character string.
Do I need to declare those variables before calling the store procedure?
Thanks,
Maria


WebFOCUS 7.6
Windows, All Outputs

February 04, 2013, 03:27 PM
Waz
I don't think the RUN is needed.

Also use -SET &ECHO=ALL;


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

February 05, 2013, 08:58 AM
Tom Flynn
MariaD,
Use &, not @, to send variables to SQLMSS Stored Procs; we also use DATABASE.DBO.STORED_PROC. This is currently in Production:

  
SQL SQLMSS SET SERVER &CONNECTION
SQL SQLMSS EX Impact.DBO.PS_WF_GetTotalFuelSpent '&FROMDATE', '&TODATE', '&DATETYPE', &CUSTKEY;
-RUN

The variables must be DECLARED in order:
  
ALTER PROCEDURE [dbo].[PS_WF_GetTotalFuelSpent]
(
@FromDate datetime,
@ToDate datetime,
@DateType varchar(100),
@CustKey int
)


hth...


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
February 05, 2013, 09:38 AM
MariaD
Tom,
Thank you for replying.
How do I declare those parameters in WF proc?
I get the following message:
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &STARTING
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &REP_INT
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &IN_CPSOURCE

and my code is as follows:
ENGINE SQLMSS SET DEFAULT_CONNECTION sqlserverid\QA
-*DECLARE @STARTING DATE
-*DECLARE @REP_INT INT
-*DECLARE @IN_CPSOURCE varchar(10)
SET @STARTING = '01/01/2013'
SET @REP_INT = 1
SET @IN_CPSOURCE = 'NL'

SQL SQLMSS PREPARE SQLOUT FOR
SQL SQLMSS SET SERVER sqlserverID\QA
SQL SQLMSS
EX VIDEO.DBO.usp_VD_VIDEO_REPORT '&STARTING','&REP_INT','&IN_CPSOURCE';
RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100
END;


WebFOCUS 7.6
Windows, All Outputs

February 05, 2013, 09:43 AM
Tom Flynn
SQLMSS automatically PREPAREs SQLOUT, commented out that line...

-SET @STARTING = '01/01/2013';
-SET @REP_INT = '1';
-SET @IN_CPSOURCE = 'NL';

-* SQL SQLMSS PREPARE SQLOUT FOR
SQL SQLMSS SET SERVER sqlserverID\QA
SQL SQLMSS
EX VIDEO.DBO.usp_VD_VIDEO_REPORT '&STARTING',&REP_INT,'&IN_CPSOURCE';
-RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100;
END



Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
February 05, 2013, 09:53 AM
MariaD
I get the following error messages:
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &STARTING
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &REP_INT
0 ERROR AT OR NEAR LINE 12 IN PROCEDURE mynewsptest2.fex
(FOC295) A VALUE IS MISSING FOR: &IN_CPSOURCE


WebFOCUS 7.6
Windows, All Outputs

February 05, 2013, 09:59 AM
Tom Flynn
Copy the code the way I have it, with a DASH and semi-colon.
Those are Dialogue Manager variables.

To see if your proc works, just hard-code, for now...

  
SQL SQLMSS SET SERVER sqlserverID\QA
SQL SQLMSS
EX VIDEO.DBO.usp_VD_VIDEO_REPORT '01/01/2013',1,'NL';
-RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100;
END






Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
February 05, 2013, 10:49 AM
MariaD
Tom,
I'm getting closer but still I'm getting this message that I don't know where it is coming from. The store procedure runs and updates the staging tables as planned. But still this SET error will not go away.

ENGINE SQLMSS SET DEFAULT_CONNECTION SERVERID\QA
SQL SQLMSS
EX VIDEO.DBO.USP_VD_VIDEO_REPORT '01/01/2013','3','NL';
RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100

(FOC227) THE FOCEXEC PROCEDURE CANNOT BE FOUND:
0 ERROR AT OR NEAR LINE 6 IN PROCEDURE SQLOUT FOCEXEC *
(FOC003) THE FIELDNAME IS NOT RECOGNIZED: SET
BYPASSING TO END OF COMMAND
(FOC009) INCOMPLETE REQUEST STATEMENT


WebFOCUS 7.6
Windows, All Outputs

February 05, 2013, 10:55 AM
Tom Flynn
MariaD,
Because you are "not" copying THE EXAMPLE correctly, and, I do not know what the PROC is doing. But, your example is invalid:

ENGINE SQLMSS SET DEFAULT_CONNECTION SERVERID\QA
SQL SQLMSS
EX VIDEO.DBO.USP_VD_VIDEO_REPORT '01/01/2013','3','NL';
-RUN
TABLE FILE SQLOUT
PRINT *
WHERE RECORDLIMIT EQ 100;
END
-EXIT

Not here to train, IBI does that, and/or, the programmer challenges themselves and opens the manual...


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe