?
Solved

Adding a field to a temp table

Posted on 2008-10-06
1
Medium Priority
?
176 Views
Last Modified: 2012-05-05
I am using the following code, see attached code in my query to convert an image to rtf.

At present the two fields outputted are applicantid, RTF

I want to add another field to the output, but cannot seem to be able to do so.

The field is p.surname which is of varchar(20)

i.e.

DECLARE YourCursor CURSOR
        FOR SELECT  c.applicantid, p.surname                    
            FROM    applicant a
                    LEFT OUTER JOIN coverletter c ON a.applicantid = c.applicantid
                    LEFT OUTER JOIN PersonalInformation p ON a.ApplicantID = p.ApplicantID
            WHERE   c.date_dt >= @start and c.date_dt < @end
           
Can anybody help?
IF OBJECT_ID('tempdb.dbo.#Temp') IS NOT NULL 
   DROP TABLE #Temp
 
DECLARE @start DATETIME
DECLARE @end DATETIME
 
 
SET @start = DATEADD(day, -67, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 120), 120))
SET @end = DATEADD(day, 1, @start)
 
DECLARE @TxtPtr BINARY(16),
        @applicantid INTEGER,
        @Data VARCHAR(8000),
        @Offset INTEGER
SET              NOCOUNT ON
CREATE TABLE #Temp
       (
         applicantid INTEGER,
         RTF TEXT
       )
DECLARE YourCursor CURSOR
        FOR SELECT  c.applicantid                    
            FROM    applicant a
                    LEFT OUTER JOIN coverletter c ON a.applicantid = c.applicantid
                    LEFT OUTER JOIN PersonalInformation p ON a.ApplicantID = p.ApplicantID
            WHERE   c.date_dt >= @start and c.date_dt < @end
OPEN YourCursor
FETCH NEXT FROM YourCursor INTO @applicantid
WHILE @@FETCH_STATUS = 0
      BEGIN
            INSERT  #Temp ( applicantid, RTF )
            VALUES  ( @applicantid, '' )
            SELECT  @TxtPtr = TEXTPTR(RTF),
                    @OffSet = 0
            FROM    #Temp
            WHERE   applicantid = @applicantid
            WHILE @OffSet IS NOT NULL
                  BEGIN
                        SELECT  @Data = CAST(CAST(SUBSTRING(document_im, @Offset + 1, 8000) AS VARBINARY(8000)) AS VARCHAR(8000))
                        FROM    coverletter
                        WHERE   applicantid = @applicantid
                        IF LEN(@Data) > 0 
                           BEGIN
                                 UPDATETEXT #Temp.RTF @TxtPtr @Offset NULL @Data
                                 SET @OffSet = @OffSet + 8000
                           END
                        ELSE 
                           BEGIN
                                 SET @OffSet = NULL
                           END
                  END
            FETCH NEXT FROM YourCursor INTO @applicantid
      END
CLOSE YourCursor
DEALLOCATE YourCursor
SELECT  applicantid,
        RTF
FROM    #Temp
DROP TABLE #Temp

Open in new window

0
Comment
Question by:halifaxman
1 Comment
 
LVL 32

Accepted Solution

by:
Daniel Wilson earned 2000 total points
ID: 22649957
Not sure what you're needing to DO w/ surname once you get it ... but this should get it into the table for you.

--http://www.experts-exchange.com/Q_23790211.html
 
IF OBJECT_ID('tempdb.dbo.#Temp') IS NOT NULL 
   DROP TABLE #Temp
 
DECLARE @start DATETIME
DECLARE @end DATETIME
 
 
SET @start = DATEADD(day, -67, CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 120), 120))
SET @end = DATEADD(day, 1, @start)
 
DECLARE @TxtPtr BINARY(16),
        @applicantid INTEGER,
		@surname varchar(20),
        @Data VARCHAR(8000),
        @Offset INTEGER
SET              NOCOUNT ON
CREATE TABLE #Temp
       (
         applicantid INTEGER,
		surname varchar(20),
         RTF TEXT
       )
DECLARE YourCursor CURSOR
        FOR SELECT  c.applicantid , p.surname                    
            FROM    applicant a
                    LEFT OUTER JOIN coverletter c ON a.applicantid = c.applicantid
                    LEFT OUTER JOIN PersonalInformation p ON a.ApplicantID = p.ApplicantID
            WHERE   c.date_dt >= @start and c.date_dt < @end
OPEN YourCursor
FETCH NEXT FROM YourCursor INTO @applicantid, @Surname
WHILE @@FETCH_STATUS = 0
      BEGIN
            INSERT  #Temp ( applicantid, surname, RTF )
            VALUES  ( @applicantid, @surname, '' )
            SELECT  @TxtPtr = TEXTPTR(RTF),
                    @OffSet = 0
            FROM    #Temp
            WHERE   applicantid = @applicantid
            WHILE @OffSet IS NOT NULL
                  BEGIN
                        SELECT  @Data = CAST(CAST(SUBSTRING(document_im, @Offset + 1, 8000) AS VARBINARY(8000)) AS VARCHAR(8000))
                        FROM    coverletter
                        WHERE   applicantid = @applicantid
                        IF LEN(@Data) > 0 
                           BEGIN
                                 UPDATETEXT #Temp.RTF @TxtPtr @Offset NULL @Data
                                 SET @OffSet = @OffSet + 8000
                           END
                        ELSE 
                           BEGIN
                                 SET @OffSet = NULL
                           END
                  END
            FETCH NEXT FROM YourCursor INTO @applicantid, @Surname
      END
CLOSE YourCursor
DEALLOCATE YourCursor
SELECT  applicantid, surname,
        RTF
FROM    #Temp
DROP TABLE #Temp

Open in new window

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Hopefully the following mnemonic and, ultimately, the acronym it represents is common place to all those reading: Please Excuse My Dear Aunt Sally (PEMDAS). Briefly, though, PEMDAS is used to signify the order of operations (http://en.…
One of the most important things in an application is the query performance. This article intends to give you good tips to improve the performance of your queries.
As many of you are aware about Scanpst.exe utility which is owned by Microsoft itself to repair inaccessible or damaged PST files, but the question is do you really think Scanpst.exe is capable to repair all sorts of PST related corruption issues?
With just a little bit of  SQL and VBA, many doors open to cool things like synchronize a list box to display data relevant to other information on a form.  If you have never written code or looked at an SQL statement before, no problem! ...  give i…
Suggested Courses

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question