Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > неполучается хранимая процедура!


Автор: sudus 18.2.2009, 21:57
Привет всем!!!
Я хочу написать хранимую процедуру в MS SQL Server - добавление  данных в таблицу. Есть три таблицы связаны через PRIMARY KEY "один ко многим" , как заполнить таблицы одной хранимой процедурой чтоб не вызывать три процедуры, т.е. возможно ли запихнуть в хранимую процедуру три INSERT ... VALUES(), если да то как?  если нет то как иначе решить ...
пробовал так но он ругается 
Код

BEGIN TRANSACTION;
USE [databese]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addinfo]
        @PersonalAccountN int,
    @ConnectionDate datetime,
    @DisconnectDate datetime,
    @Adress nvarchar(50),
    @LastName nvarchar(50),
    @Name nvarchar(50),
    @Patronymic nvarchar(50),
    @Y_Fl nvarchar(50),
    @UD nvarchar(50),
    @RNN nvarchar(50),
    
AS
BEGIN
INSERT INTO dbo.klient
VALUES (    @PersonalAccountN,
        @ConnectionDate,
        @DisconnectDate, 
        @Adress,
        @LastName,
        @Name,
        @Patronymic,
        @Y_Fl,
        @UD,
        @RNN);
INSERT INTO dbo.telephon
VALUES (@Telephons);
END
ROLLBACK TRANSACTION;


Msg 156, Level 15, State 1, Procedure addinfo, Line 13
Incorrect syntax near the keyword 'AS'.
Msg 137, Level 15, State 2, Procedure addinfo, Line 27
Must declare the scalar variable "@Telephons".

Автор: boevik 18.2.2009, 22:06
Можно выполнить 3 и более инсертов и селектов.
По поводу ошибок:
1. после  @RNN nvarchar(50) убрать запятую.
2. не хватает определения @Telephons (видимо это отсутствующий параметр после @RNN)
3. непонятно что делает ROLLBACK TRANSACTION; после END. Команда находится уже после окончания объявления процедуры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)