No. (or at least not that I know of) But, you can pre-create a temp table, then write your dynamic SQL to insert rows into that temp table, execute that sql, then create your cursor to do your dirty work after that.
-----Original Message----- From: Bradford T Comer [mailto:[EMAIL PROTECTED] Sent: Friday, September 05, 2003 15:22 To: SQL Subject: RE: Concatenation assistance... Quick question first, I might have it whipped; can EXEC return a cursor as output? when executing Dynamic SQL? Here is my entire script: the errors I am getting now are below it! -- START SQL -- declareNewRecordListA - Registered but not completed Course DECLARE @NewRecordIDListA varchar(8000) -- setDefault SET @NewRecordIDListA = '' -- declareNewRecordListB - Completed Course DECLARE @NewRecordIDListB varchar(8000) -- setDefault SET @NewRecordIDListB = '' -- declareMyRowCounterA DECLARE @MyRowCounterA int -- default to zero SET @MyRowCounterA = 0 -- declareMyRowCounterB DECLARE @MyRowCounterB int -- default to zero SET @MyRowCounterB = 0 -- getExcludeListA - these are users whom signed up but didnt finish course DECLARE @tmpExcludeListA varchar(8000); SET @tmpExcludeListA = (SELECT ExcludeListA FROM Custom_NAMBDataDumpData WHERE ID = 1); PRINT @tmpExcludeListA -- getExcludeListB - these are users whom have completed the course DECLARE @tmpExcludeListB varchar(8000); SET @tmpExcludeListB = (SELECT ExcludeListB FROM Custom_NAMBDataDumpData WHERE ID = 1); PRINT @tmpExcludeListB -- declareFetchReturnVariables DECLARE @cyb_record_num varchar(25), @cyb_course_code varchar(100), @cyb_course_grade varchar(100), @cyb_student_id varchar(25), @cyb_profile_email varchar(300), @cyb_profile_id_number varchar(111), @cyb_profile_org varchar(400), @cyb_profile_addr1 varchar(400), @cyb_profile_addr2 varchar(400), @cyb_profile_city varchar(400), @cyb_profile_state varchar(400), @cyb_profile_zip varchar(400), @cyb_profile_country varchar(400), @cyb_course_price money, @cyb_course_complete_date datetime, @cyb_billing_first_name varchar(400), @cyb_billing_last_name varchar(400), @cyb_order_addr1 varchar(400), @cyb_order_city varchar(400), @cyb_order_state varchar(400), @cyb_order_zip varchar(400), @cyb_order_phone varchar(300), @cyb_order_email varchar(300), @cyb_order_pay_method varchar(400), @cyb_order_cc_num varchar(150), @cyb_order_cc_expire varchar(150), @cyb_order_datetime datetime -- decalareCursor DECLARE @MyCursor CURSOR -- cleanUpBListAddApostrophes DECLARE @CleanedExcludeListB varchar(8000) SET @CleanedExcludeListB = '' DECLARE @tmpDelim varchar(15) SET @tmpDelim = CHAR(39) + CHAR(44) + CHAR(39) IF (LEN(RTRIM(@tmpExcludeListB)) > 0) BEGIN SET @CleanedExcludeListB = REPLACE(@tmpExcludeListB, CHAR(44), @tmpDelim) END ELSE BEGIN SET @CleanedExcludeListB = '' END -- finalCleanup SET @CleanedExcludeListB = CHAR(39) + @CleanedExcludeListB + CHAR(39) -- DEBUG: cleanedListB PRINT @CleanedExcludeListB DECLARE @MySQL varchar(8000) SET @MySQL = 'DECLARE @MyCursor CURSOR SET @MyCursor = CURSOR FORWARD_ONLY STATIC FOR SELECT x.cyb_record_num, x.cyb_course_code, x.cyb_course_grade, y.cyb_student_id, y.cyb_profile_email, y.cyb_profile_id_number, y.cyb_profile_org, y.cyb_profile_addr1, y.cyb_profile_addr2, y.cyb_profile_city, y.cyb_profile_state, y.cyb_profile_zip, y.cyb_profile_country, a.cyb_course_price, z.cyb_course_complete_date, (SELECT TOP 1 tbl.cyb_order_first_name FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_billing_first_name, (SELECT TOP 1 tbl.cyb_order_last_name FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_billing_last_name, (SELECT TOP 1 tbl.cyb_order_addr1 FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_addr1, (SELECT TOP 1 tbl.cyb_order_city FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_city, (SELECT TOP 1 tbl.cyb_order_state FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_state, (SELECT TOP 1 tbl.cyb_order_zip FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_zip, (SELECT TOP 1 tbl.cyb_order_phone FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_phone, (SELECT TOP 1 tbl.cyb_order_email FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_email, (SELECT TOP 1 tbl.cyb_order_pay_method FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_pay_method, (SELECT TOP 1 RIGHT(tbl.cyb_order_cc_num, 4) FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_cc_num, (SELECT TOP 1 tbl.cyb_order_cc_expire FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_cc_expire, (SELECT TOP 1 tbl.cyb_order_datetime FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_datetime FROM cyb_grade_book_mast x INNER JOIN cyb_student_profile_mast y ON x.cyb_student_id = y.cyb_student_id INNER JOIN cyb_required_course_mast z ON x.cyb_student_id = z.cyb_student_id INNER JOIN cyb_course_mast a ON x.cyb_course_code = a.cyb_course_code WHERE ((y.cyb_profile_id_number <> ''000000-00'') AND ((x.cyb_course_code = ''NAMB001M'' OR x.cyb_course_code = ''NAMB001NM'') OR (x.cyb_course_code = ''NAMB002M'' OR x.cyb_course_code = ''NAMB002NM'') OR (x.cyb_course_code = ''NAMB003M'' OR x.cyb_course_code = ''NAMB003NM'')) AND (x.variable_switch_1 <> ''M'') AND (x.cyb_org_id = 11) AND (z.cyb_course_code LIKE x.cyb_course_code) AND (z.cyb_org_id = 11) AND (x.cyb_record_num NOT IN (' + @CleanedExcludeListB + ')) ) ORDER BY x.cyb_course_code ASC OPEN @MyCursor ' PRINT @MySQL EXEC (@MySQL) -- EXEC [_MyCursorX] @MySQL = @MySQL, @spExcludeListB = @CleanedExcludeListB, @MyCursor = @MyCursor OUTPUT -- fetchNextRow FETCH NEXT FROM @MyCursor INTO @cyb_record_num, @cyb_course_code, @cyb_course_grade, @cyb_student_id, @cyb_profile_email, @cyb_profile_id_number, @cyb_profile_org, @cyb_profile_addr1, @cyb_profile_addr2, @cyb_profile_city, @cyb_profile_state, @cyb_profile_zip, @cyb_profile_country, @cyb_course_price, @cyb_course_complete_date, @cyb_billing_first_name, @cyb_billing_last_name, @cyb_order_addr1, @cyb_order_city, @cyb_order_state, @cyb_order_zip, @cyb_order_phone, @cyb_order_email, @cyb_order_pay_method, @cyb_order_cc_num, @cyb_order_cc_expire, @cyb_order_datetime -- loopCursor WHILE (@@FETCH_STATUS = 0) BEGIN PRINT @@CURSOR_ROWS /* -- DEBUG: displayRowData PRINT @cyb_record_num + '~' + @cyb_course_code + '~' + @cyb_course_grade + '~' + @cyb_student_id + '~' + @cyb_profile_email + '~' + @cyb_profile_id_number + '~' + @cyb_profile_org + '~' + @cyb_profile_addr1 + '~' + @cyb_profile_addr2 + '~' + @cyb_profile_city + '~' + @cyb_profile_state + '~' + @cyb_profile_zip + '~' + @cyb_profile_country + '~' + CAST(@cyb_course_price AS VARCHAR) + '~' + CAST(@cyb_course_complete_date AS varchar(44)) + '~' + @cyb_billing_first_name + '~' + @cyb_billing_last_name + '~' + @cyb_order_addr1 + '~' + @cyb_order_city + '~' + @cyb_order_state + '~' + @cyb_order_zip + '~' + @cyb_order_phone + '~' + @cyb_order_email + '~' + @cyb_order_pay_method + '~' + @cyb_order_cc_num + '~' + @cyb_order_cc_expire + '~' + CAST(@cyb_order_datetime AS varchar(44)) -- DEBUG: listComparision PRINT ',' + RTRIM(@tmpExcludeListA) + ',' PRINT '%,' + RTRIM(CAST(@cyb_record_num AS VARCHAR(25))) + ',%' */ -- Newly Registered User; A list; irrelevant if they completed course or not, since all data is written IF NOT ((',' + RTRIM(@tmpExcludeListA) + ',') LIKE ('%,' + RTRIM(CAST(@cyb_record_num AS VARCHAR(25))) + ',%')) BEGIN -- insertRecord -- appendIDTo @NewRecordIDListA IF LEN(RTRIM(@NewRecordIDListA)) > 0 BEGIN SET @NewRecordIDListA = @NewRecordIDListA + ',' + CAST(@cyb_record_num AS VARCHAR(25)) END ELSE SET @NewRecordIDListA = CAST(@cyb_record_num AS VARCHAR(25)) -- incrementMyRowCounterA SET @MyRowCounterA = @MyRowCounterA + 1 END ELSE -- Registered User, check to see if they have finished the course; if TRUE add to B list BEGIN IF (RTRIM(@cyb_course_grade) <> 0) BEGIN -- appendIDTo @NewRecordIDListB IF LEN(RTRIM(@NewRecordIDListB)) > 0 BEGIN SET @NewRecordIDListB = @NewRecordIDListB + ',' + CAST(@cyb_record_num AS VARCHAR(25)) END ELSE SET @NewRecordIDListB = CAST(@cyb_record_num AS VARCHAR(25)) -- incrementMyRowCounter SET @MyRowCounterB = @MyRowCounterB + 1 END END -- getNextRow FETCH NEXT FROM @MyCursor INTO @cyb_record_num, @cyb_course_code, @cyb_course_grade, @cyb_student_id, @cyb_profile_email, @cyb_profile_id_number, @cyb_profile_org, @cyb_profile_addr1, @cyb_profile_addr2, @cyb_profile_city, @cyb_profile_state, @cyb_profile_zip, @cyb_profile_country, @cyb_course_price, @cyb_course_complete_date, @cyb_billing_first_name, @cyb_billing_last_name, @cyb_order_addr1, @cyb_order_city, @cyb_order_state, @cyb_order_zip, @cyb_order_phone, @cyb_order_email, @cyb_order_pay_method, @cyb_order_cc_num, @cyb_order_cc_expire, @cyb_order_datetime -- endLoopCursor END -- closeCursor CLOSE @MyCursor -- deallocateCursor DEALLOCATE @MyCursor -- updateExcludeListA & B with NewRecordIDListAA OR B PRINT 'A Data' PRINT @NewRecordIDListA PRINT @MyRowCounterA PRINT '' PRINT 'B Data' PRINT @NewRecordIDListB PRINT @MyRowCounterB GO -- END SQL ----------- SQL DEBUGGIN OUTPUT ----------- 98875,98876 99720,99000,98987,99117 DECLARE @MyCursor CURSOR SET @MyCursor = CURSOR FORWARD_ONLY STATIC FOR SELECT x.cyb_record_num, x.cyb_course_code, x.cyb_course_grade, y.cyb_student_id, y.cyb_profile_email, y.cyb_profile_id_number, y.cyb_profile_org, y.cyb_profile_addr1, y.cyb_profile_addr2, y.cyb_profile_city, y.cyb_profile_state, y.cyb_profile_zip, y.cyb_profile_country, a.cyb_course_price, z.cyb_course_complete_date, (SELECT TOP 1 tbl.cyb_order_first_name FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_billing_first_name, (SELECT TOP 1 tbl.cyb_order_last_name FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_billing_last_name, (SELECT TOP 1 tbl.cyb_order_addr1 FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_addr1, (SELECT TOP 1 tbl.cyb_order_city FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_city, (SELECT TOP 1 tbl.cyb_order_state FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_state, (SELECT TOP 1 tbl.cyb_order_zip FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_zip, (SELECT TOP 1 tbl.cyb_order_phone FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_phone, (SELECT TOP 1 tbl.cyb_order_email FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_email, (SELECT TOP 1 tbl.cyb_order_pay_method FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_pay_method, (SELECT TOP 1 RIGHT(tbl.cyb_order_cc_num, 4) FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_cc_num, (SELECT TOP 1 tbl.cyb_order_cc_expire FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_cc_expire, (SELECT TOP 1 tbl.cyb_order_datetime FROM cyb_order_detail_mast tbl WHERE ((x.cyb_course_code = tbl.cyb_course_code) AND (x.cyb_student_id = tbl.cyb_student_id))) AS cyb_order_datetime FROM cyb_grade_book_mast x INNER JOIN cyb_student_profile_mast y ON x.cyb_student_id = y.cyb_student_id INNER JOIN cyb_required_course_mast z ON x.cyb_student_id = z.cyb_student_id INNER JOIN cyb_course_mast a ON x.cyb_course_code = a.cyb_course_code WHERE ((y.cyb_profile_id_number <> '000000-00') AND ((x.cyb_course_code = 'NAMB001M' OR x.cyb_course_code = 'NAMB001NM') OR (x.cyb_course_code = 'NAMB002M' OR x.cyb_course_code = 'NAMB002NM') OR (x.cyb_course_code = 'NAMB003M' OR x.cyb_course_code = 'NAMB003NM')) AND (x.variable_switch_1 <> 'M') AND (x.cyb_org_id = 11) AND (z.cyb_course_code LIKE x.cyb_course_code) AND (z.cyb_org_id = 11) AND (x.cyb_record_num NOT IN ('99720','99000','98987','99117')) ) ORDER BY x.cyb_course_code ASC OPEN @MyCursor Server: Msg 16950, Level 16, State 2, Line 159 The variable '@MyCursor' does not currently have a cursor allocated to it. Server: Msg 16950, Level 16, State 2, Line 215 The variable '@MyCursor' does not currently have a cursor allocated to it. Server: Msg 16950, Level 16, State 2, Line 218 The variable '@MyCursor' does not currently have a cursor allocated to it. A Data 0 B Data 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/lists.cfm?link=t:6 Subscription: http://www.houseoffusion.com/lists.cfm?link=s:6 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=<:emailid:>.<:userid:>.<:listid:> Your ad could be here. Monies from ads go to support these lists and provide more resources for the community. http://www.fusionauthority.com/ads.cfm
