Solved

Adding a field to a temp table

Posted on 2008-10-06
1
162 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 500 total points
Comment Utility
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

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

'Between' is such a common word we rarely think about it but in SQL it has a very specific definition we should be aware of. While most database vendors will have their own unique phrases to describe it (see references at end) the concept in common …
If you find yourself in this situation “I have used SELECT DISTINCT but I’m getting duplicates” then I'm sorry to say you are using the wrong SQL technique as it only does one thing which is: produces whole rows that are unique. If the results you a…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

763 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

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now