Как использовать усеченную таблицу и вставить в таблицу в пользовательской функции определения для SQL Server 2005? - PullRequest
1 голос
/ 18 октября 2011

Я пытаюсь использовать простую функцию в SQL Server 2005, и она генерирует ошибку.

CREATE FUNCTION [dbo].[fn_data_stat_cc_update]
(
  @result char
)
RETURNS char(1)
AS
  BEGIN
    truncate table stg_data_cancer_center;

    INSERT INTO stg_data_cancer_center(
            mrn, pt_city, pt_state, pt_zip, pt_pri_dx, clinic, source
    SELECT rtrim(ltrim(mrn)) as mrn,
    pat_city, pat_state, zipcode, exact_icd9_code_pri_dx, 'clinic' =
    case
        when inst_id = 1 then 'CANRAD'
        when inst_id = 2 then 'CANHAM'
        else @result--''
    end, 'MOSAIQ' as Source
    from stg_mosaiq_patient;

     RETURN LTRIM(RTRIM(@result)) 
  END

Ошибки:

Procedure fn_data_stat_cc_update, Line 18
Invalid use of side-effecting or time-dependent operator in 'TRUNCATE TABLE' within a function.
Procedure fn_data_stat_cc_update, Line 25
Invalid use of side-effecting or time-dependent operator in 'INSERT' within a function.

1 Ответ

3 голосов
/ 18 октября 2011

Вы не можете.

Вам необходимо использовать хранимую процедуру. Функции не могут иметь побочных эффектов, таких как изменение данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...