Используйте Cursor и If для хранения и замены данных. - PullRequest
0 голосов
/ 19 сентября 2018

Я преобразую код FoxPro в SQL для отчета.Текущий код FoxPro приведен ниже.Мне нужно иметь возможность создавать два курсора, хранить в них данные из двух полей и сверять их с таблицей для замены данных.Может ли кто-нибудь помочь мне преобразовать этот код в sql для сервера sql?

Код FoxPro

CREATE Cursor delete_cursor(salesno c(6), release_number c(3))     
SELECT table1    
GOTO TOP    
lcsono= table1.salesno
lcrelease = table1.release_number     
GOTO 2    
SCAN REST

   IF table1.salesno == lcsono AND table1.release_number <> "000"
      AND lcrelease = "000"

      SELECT delete_cursor
      APPEND BLANK
      REPLACE table1.salesno WITH lcsono
      REPLACE table1.release_number WITH lcrelease
      SELECT table1
   ENDIF

   lcsono = table1.salesno
   lcrelease= table1.release_number
ENDSCAN

SELECT delete_cursor
INDEX on ALLTRIM(delete_cursor.salesno) + ALLTRIM(delete_cursor.releaseno)
  TAG tagdelete

SELECT table1
GOTO TOP
SCAN
   IF SEEK(ALLTRIM(table1.salesno) + ALLTRIM (table1.salesno), 
      "delete_cursor", "tagdelete")

      REPLACE table1.delflag WITH "Y"
   ENDIF
ENDSCAN

Мой код SQL Server

DECLARE CURSOR @fsono char(6)
update table1.salesno Set 
      table1.salesno = @fsono
   where 
          @fsono = table1.salesno 
      AND table1.release_number <> "000" 
      AND lcrelease = "000" 

DECLARE CURSOR @release char(6)

update table1.release_number Set 
      table1.release_number = @release
   where 
          @fsono = table1.salesno 
      AND table1.release_number <> "000" 
      AND @release = "000"
...