Вставьте данные с помощью процедур магазина - PullRequest
0 голосов
/ 07 февраля 2012

table

Скажем, после того, как у меня будет логин, мне будет предложено ввести Имя и адрес, как мне вставить данные, по крайней мере, с двумя таблицами, связанными друг с другом, используя процедуры Store?

1 Ответ

0 голосов
/ 07 февраля 2012

Попробуйте что-то вроде этого:

CREATE PROC dbo.user_Add(
 @username VARCHAR(50),
 @password NVARCHAR(50)
) 
AS 
BEGIN
   -- username should be unique
   IF NOT EXISTS(SELECT TOP 1 1 FROM Login WHERE username = @username) BEGIN
      INSERT INTO Login (username, password)
      VALUES (@username, @password)

      RETURN @@IDENTITY
   END
   ELSE BEGIN
   -- already taken username should be handled somehow
      RETURN 0
   END
END

CREATE PROC dbo.user_StudentAdd(
  @loginID INT,
  @name NVARCHAR(50),
  @addr NVARCHAR(100)
)
AS
BEGIN
  -- add new record for new student 
  -- probably before you should check if student is not already exist
  INSERT INTO Student (LoginID, [Student Name], [Student address])
  VALUES (@loginID, @name, @addr)

  -- returns new StudentID, you can also use `RETURN` to return StudentId (if you need it)
  SELECT @@IDENTITY
END

В качестве домашней работы вы можете написать третью хранимую процедуру, которая вызывает две вышеупомянутые процедуры и использовать результат из первой в вторую.Подсказка - используйте EXEC, чтобы присвоить значение, возвращаемое хранимой процедурой (подробности: http://msdn.microsoft.com/en-us/library/ms174998.aspx).

Я не проверял его, поэтому он может потерпеть неудачу из-за неправильной орфографии. Также я никогда не использовал столбцыс пробелом внутри, поэтому я не уверен, как с ними справиться.

I предполагает , что:

  1. Пользователь (запись в таблице login) уже существует идоступно значение login.loginID (пользователь уже вошел в систему).
  2. Было проверено, что вошедшему в систему пользователю необходимо выполнить данные своих учеников.

Один больше - я бы не использовал имена столбцов с пробелами (или нелатинскими символами).

...