Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сложно обновление таблицы  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Доброго времени. Есть хранимка

USE [VCM]
GO
/****** Object:  StoredProcedure [dbo].[suts_UsersSave]    Script Date: 12/23/2011 12:50:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[suts_UsersSave]
    @xml_data ntext
as

declare @hdoc int

exec sp_xml_preparedocument @hdoc output , @xml_data output
    select * into #tab  from openxml(@hdoc , '/Xml/Users') with(
        [Login] nvarchar(64) 'Login',
        Domain nvarchar(64)  'Domain',
        Surname nvarchar(50) 'Surname',
        Firstname nvarchar(50) 'Firstname',
        Patronimyc nvarchar(50) 'Patronimyc',
        PhoneNo nvarchar(50) 'PhoneNo',
		eMail nvarchar(50) 'eMail',
        JobPost nvarchar(150) 'JobPost',
        Remarks nvarchar(400) 'Remarks',
        DepartamentName  nvarchar(250) 'DepartamentName',        
        BranchName nvarchar(250) 'BranchName',
        DistrictName nvarchar(250) 'DistrictName',
        Chief nvarchar(50) 'Chief',
        [Password] nvarchar(50) 'Password',
        [Role] nvarchar(50) 'Role')
exec sp_xml_removedocument @hdoc
begin
	if NOT EXISTS (select * from dbo.Users u inner join #tab t on t.[Login] = u.[Login]) 
		BEGIN
			insert into [dbo].[Users]([Login], [Domain], [Surname], [Firstname], [Patronimyc]
			  ,[PhoneNo], [eMail], [JobPost], [Remarks], [C_Department_DepartmentId], [C_Branch_BranchId])
			select [Login],[Domain],[Surname],[Firstname],[Patronimyc]
			  ,[PhoneNo],[eMail],[JobPost],[Remarks]
			  ,[C_Department_DepartmentId] = (select top 1 DepartmentId from dbo.C_Departments t 
				where t.DepartmentName = DepartamentName)
			  ,[C_Branch_BranchId] = (select top 1 BranchId from [dbo].[C_Branchs] tab
				where tab.BranchName = BranchName) from #tab 
				
			
		end 
		  else 
			
			    update [dbo].[Users] 
			update [dbo].[Users] 
				set [Domain] = 
					,[Surname]= 
					,[Firstname]=
					,[Patronimyc]=
					,[PhoneNo]=
					,[eMail]=
					,[JobPost]= 
				    ,[Remarks]=
				    ,[C_Department_DepartmentId]=
				    ,[C_Branch_BranchId]=	  	    

go

exec suts_UsersSave @xml_data=N'<Xml>
  <Users>
    <BranchName> филиал</BranchName>
    <Surname>ххххххххххх</Surname>
    <Firstname>уууууууууу</Firstname>
    <Patronimyc>ооооооооо</Patronimyc>
    <Login>qqqqqqqqq</Login>
    <Domain>CTX</Domain>
    <Password>qwer</Password>
    <Role>admin</Role>
    <eMail></eMail>
    <DepartamentName>Отдел</DepartamentName>
    <JobPost>начальника</JobPost>
    <PhoneNo>(12345678</PhoneNo>
    <Remarks></Remarks>
    <DistrictName></DistrictName>
    <Chief></Chief>
  </Users>
</Xml>'


необходимо написать update. НЕ могу разобраться

Сообщение было отредактировано: 23 дек 11, 20:25
23 дек 11, 18:58    [11817627]     Ответить | Цитировать Сообщить модератору
 Re: Сложно обновление таблицы  [new]
Lasa
Member

Откуда: Canada
Сообщений: 81
else     
update [dbo].[Users] 
set [Domain] = t.Domain
,[Surname]= t.Surname
,[Firstname]=t.Firstname
..........
from dbo.Users u inner join #tab t on t.[Login] = u.[Login] 
23 дек 11, 21:47    [11818165]     Ответить | Цитировать Сообщить модератору
 Re: Сложно обновление таблицы  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Lasa,

Спасибо за ответ. Но у меня трудности ,с обновлением полей [C_Department_DepartmentId]. Можете посоветовать, как действовать?
26 дек 11, 09:49    [11824221]     Ответить | Цитировать Сообщить модератору
 Re: Сложно обновление таблицы  [new]
ильдар4
Member

Откуда:
Сообщений: 135
Lasa,

Все, сам разобрался. Спасибо!
26 дек 11, 10:01    [11824295]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить