sql >> Databasteknik >  >> RDS >> Sqlserver

Är en tabellvärderad funktion uppdateringsbar

Så det du vill ha är:

Update cm.bo.hotlist('08Z')
set
<EmployeeID Column> = '06D'
where
city in ('New York', 'Chicago')

För alla som kommer hit, ja, en in-line tabellvärdefunktion är uppdateringsbar så länge den underliggande datamängden är uppdateringsbar. Ett kodexempel:

IF EXISTS(select * from sys.objects where name = 'test' and schema_id = schema_id('dbo')) BEGIN DROP TABLE dbo.test; END

CREATE TABLE dbo.test(Employee varchar(10), city varchar(10));

CREATE FUNCTION [dbo].[getEmployeeCities] ( @employee varchar(10) RETURNS TABLE  AS
RETURN  (  SELECT * from test where employee = @employee );

insert into dbo.test select 'A', 'Chicago';
insert into dbo.test select 'B', 'New York';

select * from dbo.test;

update dbo.getEmployeeCities('A')
set Employee = 'B'
where city = 'Chicago';

select * from dbo.test;


  1. Oracle <> , !=, ^=operatorer

  2. ansluta sql server 2005/2008 över internet

  3. FEL 1075:Felaktig tabelldefinition; det kan bara finnas en automatisk kolumn och den måste definieras som en nyckel

  4. Lägg till en tidszonförskjutning till ett datetime2-värde i SQL Server (T-SQL)