Solved

Adding a field to a temp table

Posted on 2008-10-06
1
169 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 32

Accepted Solution

by:
Daniel Wilson earned 500 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

Monthly Recap

May was a big month for new releases from Linux Academy! Take a look at what our team built recently in our blog. You can access the newest releases from our blog.

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.…
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…

728 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