Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удивительное рядом ...... / 8 сообщений из 8, страница 1 из 1
30.10.2002, 12:06:11
    #32063066
Raven#377
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
Дали мне ХП следующего содержания ..

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
CREATE PROCEDURE sp_ClientPerson_Register

@SessionID int,

@DbID int,
@ID int,
@OnLine tinyint,

@Login TLoginName OUTPUT, 
@Pwd TLoginPwd,
@Type tinyint,

@FirstName TName, @MiddleName TName, @LastName TName, @BirthDate datetime, @Sex bit, 
@Country TCountry, @State TState, @City TCity, @Address TAddress, @Zip TZip, @Email	TEMail, @Phone TPhone,

@LogID int OUTPUT,
@Logged datetime OUTPUT,
@DataID int OUTPUT,

@LoginID int OUTPUT,
@ClientID int OUTPUT,
@RegID int OUTPUT,

@Name TName OUTPUT,
@NewLogin TLoginName OUTPUT, 
@OriginLogin TLoginName OUTPUT, 
@Started datetime OUTPUT,
@Status int OUTPUT

 AS

 /*
 -1 - Error
 0 - Ok
 1 - Empty Login
 2 - Empty password
 3 - Found but was renamed
 4 - Renamed and was added as newbie
 5 - Incorrect password
 6 - Was added as newbie
*/ 


DECLARE @Result int SET @Result = - 1 

DECLARE @N int, @OldLoginID int, @OldClientID int, @OldLogin TLoginName,  @OldPwd TLoginPwd, @ErrorMsg varchar( 255 ), @Code TCode
DECLARE @ClientType tinyint, @Updated datetime

SET @LoginID = NULL

SET @Logged = GETUTCDATE()

BEGIN TRANSACTION ClientPersonRegister

INSERT INTO ClientPersonData (FirstName, MiddleName, LastName, BirthDate, Sex, Country, State, City, Address, Zip, Email, Phone)
                                     VALUES (@FirstName, @MiddleName, @LastName, @BirthDate, @Sex, @Country, @State, @City, @Address, @Zip, @Email, @Phone)
IF @@ERROR <>  0  BEGIN ROLLBACK  TRANSACTION ClientPersonRegister RETURN - 1  END
SET @DataID = @@IDENTITY

INSERT INTO ClientPersonRegsLog (Logged, OnLine, Login, Pwd, Type, Status, DataID, SessionID, [$DbID], [$ID])
                                            VALUES (@Logged, @OnLine, @Login, @Pwd, @Type, @Result,  @DataID, @SessionID, @DbID, @ID)

IF @@ERROR <>  0  BEGIN ROLLBACK  TRANSACTION ClientPersonRegister RETURN - 1  END
SET @LogID = @@IDENTITY

COMMIT TRANSACTION ClientPersonRegister

BEGIN TRANSACTION ClientPersonRegister

 -- Check the loginname and the password of the login
 

SET @Login = ISNULL(@Login,'')
SET @Pwd = ISNULL(@Pwd,'')

IF ( @Login = '' ) OR (@Pwd = '' )
 BEGIN 
    IF @Login = '' BEGIN SET @Login =  '$' + convert(varchar( 8 ),@LogID) SET @ErrorMsg = 'Empty login'  SET @Result =  1  END
    IF @Pwd = '' BEGIN SET @Pwd =  '$' + convert(varchar( 8 ),@LogID) SET @ErrorMsg = 'Empty password'  SET @Result =  2  END
   IF @OnLine =  0 
   BEGIN
     INSERT INTO ClientPersonLogins (ClientID, Login, Pwd, Started, Status, Type)  VALUES ( 0 , @Login, @Pwd, @Logged,  0 ,  255 )
    SET @LoginID = @@IDENTITY
  END
  GOTO SaveHandler 
END

 /* Find a login with the name*/ 
SELECT @OldLoginID = LoginID, @OldPwd = Pwd, @OldClientID = ClientID  FROM ClientPersonLogins WHERE  (Login = @Login) AND  (Type = @Type)
SET @N = @@ROWCOUNT

IF @N >  0 
BEGIN

 UPDATE ClientPersonLogins SET Status =  0  WHERE (LoginID = @OldLoginID)  /* Wake up, login !*/ 
 IF @Pwd = @OldPwd
  BEGIN
    SET @Result =  0   /* This means the login has been found by the name and the password*/ 
    SET @LoginID = @OldLoginID
 --    SET @CurrentLogin = 1
 
    SET @ClientID = @OldClientID
    EXEC sp_ClientPerson_ModifyByData @OldClientID, @Name, @Code,  @DataID,  @RegID OUTPUT, @Updated OUTPUT
  END
    ELSE
  BEGIN
     /* Find a login with these name and password by the oldname and the password */ 
    SELECT @OldLoginID = LoginID, @OldPwd = Pwd, @OldClientID = ClientID FROM ClientPersonLogins WHERE  (OriginLogin = @Login)  AND (Pwd = @Pwd) AND (Type = @Type)
    SET @N = @@ROWCOUNT
     IF @N =  0 
      BEGIN  /* Name collision on @Login */ 
        IF @OnLine =  0 
         BEGIN  /* Renaming */ 
          SET @NewLogin = RTRIM(LTRIM(@Login)) + SUBSTRING(@LastName, 1 , 1 )
          IF EXISTS(SELECT LoginID FROM ClientPersonLogins WHERE (Login = @NewLogin) AND (Type = @Type))
          BEGIN
           SET @NewLogin = RTRIM(LTRIM(@NewLogin)) + SUBSTRING(@FirstName, 1 , 1 )
            IF EXISTS(SELECT LoginID FROM ClientPersonLogins WHERE (Login = @NewLogin) AND (Type = @Type))
            BEGIN
              SET @NewLogin = RTRIM(LTRIM(@NewLogin)) + RTRIM(LTRIM(STR(@LogID, 8 , 0 )))
            END
         END

        EXEC sp_ClientPerson_CreateByData @Name, @Code, @DataID, @ClientID OUTPUT, @ClientType OUTPUT, @RegID OUTPUT, @Updated  OUTPUT
        INSERT INTO ClientPersonLogins (ClientID, Login, Pwd, Type, OriginLogin, Started) VALUES (@ClientID, @NewLogin,@Pwd, @Type, @Login, @Logged)
        IF (@@ERROR <>  0 )  BEGIN  SET @ErrorMsg = 'Cannot insert renamed login' GOTO ErrHandler  END
        SET @LoginID = @@IDENTITY
 --       SET @CurrentLogin = 1
 
        SET @Result =  2   /* This means the login has been renamed and added as a newbie */ 
     END
      BEGIN
       SET @Result =  5 
       SET @ErrorMsg = 'Incorrect password' 
       GOTO SaveHandler  
     END

      END
        ELSE
      BEGIN
       UPDATE ClientPersonLogins SET Status =  0  WHERE (LoginID = @OldLoginID)  /* Wake up, login !*/ 
       SET @Result =  3   /* This means the player has been found by the old name  and the password*/ 
       SET @LoginID = @OldLoginID
 --       SET @CurrentLogin = 1
 
       SET @ClientID = @OldClientID
       EXEC sp_ClientPerson_ModifyByData @OldClientID, @Name, @Code, @DataID, @RegID OUTPUT, @Updated OUTPUT
      END 

  END
END
  ELSE
BEGIN  /* We have not found that login by these name and password at all and we'll add one as a newbie*/ 
    EXEC sp_ClientPerson_CreateByData @Name, @Code, @DataID, @ClientID OUTPUT, @ClientType OUTPUT, @RegID OUTPUT, @Updated  OUTPUT
    INSERT INTO ClientPersonLogins (ClientID, Login, Pwd, Type, Started) VALUES (@ClientID, @Login, @Pwd, @Type, @Logged)
    IF (@@ERROR <>  0 )  BEGIN  SET @ErrorMsg = 'Cannot insert new login' GOTO ErrHandler  END
    SET @LoginID = @@IDENTITY
 --        SET @CurrentLogin = 1
 
    SET @Result =  4   /* This means the login is a newbie*/ 
END

SaveHandler:

COMMIT TRANSACTION ClientPersonRegister

UPDATE ClientPersonRegsLog SET LoginID = @LoginID, Status = @Result, ErrorMsg = @ErrorMsg WHERE LogID = @LogID
RETURN @Result

ErrHandler:
ROLLBACK TRANSACTION ClientPersonRegister

SET @Result = - 1 
UPDATE ClientPersonRegsLog SET LoginID = @LoginID, Status = @Result, ErrorMsg = @ErrorMsg WHERE LogID = @LogID

EndHandler:
RETURN @Result
GO


соответственно выполняю её следующим образом....
Код: plaintext
1.
2.
3.
4.
5.
6.
set rs_register = Server.createobject( "ADODB.Recordset" )
	sql =  "DECLARE @Result int, @SessionID int, @DbID int, @ID int, @OnLine tinyint, @Login TLoginName, @Pwd TLoginPwd, @Type tinyint, @FirstName TName, @MiddleName TName, @LastName TName, @BirthDate datetime, @Sex bit, @Country TCountry, @State TState, @City TCity, @Address TAddress, @Zip TZip, @Email TEMail, @Phone TPhone, @LogID int, @Logged datetime, @DataID int, @LoginID int, @ClientID int, @RegID int, @Name TName, @NewLogin TLoginName, @OriginLogin TLoginName, @Started datetime, @Status int " &_
		   "SET @OnLine = 0  SET @DbID = NULL SET @ID = NULL SET @LoginID = NULL SET @SessionID =  0  SET @Login = '"& login &"' SET @Pwd = '"& password &"' SET @Type =  0  SET @FirstName = "& first_name & " SET @MiddleName = NULL SET @LastName = " & last_name & " SET @BirthDate= " & birth_date & " SET @Sex = " & sex & " SET @Country = " & country & " SET @State= " & state & " SET @City = " & city & " SET @Address = " & address & " SET @Zip = " & zip & " SET @Email = '"& email &"' SET @Phone = " & phone & " " &_
		   "EXEC @Result = sp_ClientPerson_Register @SessionID, @DbID, @ID, @OnLine, @Login, @Pwd, @Type, @FirstName, @MiddleName, @LastName, @BirthDate, @Sex, @Country, @State, @City, @Address, @Zip, @Email, @Phone, @LogID OUTPUT, @Logged OUTPUT, @DataID OUTPUT, @LoginID OUTPUT, @ClientID OUTPUT, @RegID OUTPUT, @Name OUTPUT, @NewLogin OUTPUT, @OriginLogin OUTPUT, @Started OUTPUT, @Status OUTPUT " &_
		   "select @Result as Result, @LoginID as LoginID, @ClientID as ClientID, @RegID as RegID" 
	rs_register.open sql, cn

Потом пытаюсь получить поля этого рекордсета типа ...
Код: plaintext
1.
<%= rs_register.fields( "Result" )%>


все как обычно .... но мне АСП говорит что обьект закрыт !!! ....
Я и курсоры пробовал ставить и исполнять код отдельно ....ничего не помогает .... что делать ума не приложу ..... :( А может и прикладывать нечего ????
...
Рейтинг: 0 / 0
30.10.2002, 12:10:50
    #32063069
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
Поставить в начале процедуры
SET NOCOUNT ON
...
Рейтинг: 0 / 0
30.10.2002, 12:11:03
    #32063070
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
SET NOCOUNT ON в начало процедуры.
...
Рейтинг: 0 / 0
30.10.2002, 12:13:40
    #32063072
Raven#377
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
А куда именно ???.... потому что в СИКВЕЛ я еще слабоват ....:(
...
Рейтинг: 0 / 0
30.10.2002, 12:20:10
    #32063074
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
сразу после AS
...
Рейтинг: 0 / 0
30.10.2002, 12:25:26
    #32063077
Raven#377
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
to all: не помогает ..... :(
...
Рейтинг: 0 / 0
30.10.2002, 12:30:11
    #32063082
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
sql = " SET NOCOUNT ON DECLARE @Result int, @SessionID int.....
...
Рейтинг: 0 / 0
30.10.2002, 12:37:47
    #32063088
Raven#377
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удивительное рядом ......
Спасибо большое всем ...... помогло ... :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удивительное рядом ...... / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]