CREATE PROCEDURE PRO_SQLSERVER_PD @ls_tablename VARCHAR(50) AS
DECLARE @ID INT
/*
描述:将pb的系统表pbcattbl和pbcatcol的id字段更新,从sqlserver反向导入pd中时可以导入中文字段
时间:07/04/24
*/
BEGIN TRANSACTION
DECLARE COLUMNS_CURSOR CURSOR FOR
SELECT id ,name FROM sysobjects WITH(NOLOCK) where xtype='u' and (name=@ls_tablename or @ls_tablename='')
OPEN COLUMNS_CURSOR
FETCH NEXT FROM COLUMNS_CURSOR INTO @ID,@ls_tablename
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE pbcattbl set pbt_tid =@id where pbt_tnam =@ls_tablename
IF @@ERROR<>0
BEGIN
ROLLBACK
RAISERROR('出现错误1',11,1)
RETURN
END
UPDATE pbcatcol set pbc_tid =@id where pbc_tnam =@ls_tablename
IF @@ERROR<>0
BEGIN
ROLLBACK
RAISERROR('出现错误2',11,1)
RETURN
END
SELECT NO1 = IDENTITY(int,1,1),SYSCOLUMNS.* INTO #TEMP FROM SYSCOLUMNS WHERE ID =@ID
UPDATE pbcatcol SET PBC_CID =NO1 FROM #TEMP,pbcatcol WHERE #TEMP.NAME =PBC_CNAM AND PBC_TNAM =@ls_tablename
IF @@ERROR<>0
BEGIN
ROLLBACK
RAISERROR('出现错误3',11,1)
RETURN
END
DROP TABLE #TEMP
FETCH NEXT FROM COLUMNS_CURSOR INTO @ID,@ls_tablename
END
CLOSE COLUMNS_CURSOR
DEALLOCATE COLUMNS_CURSOR
COMMIT
GO