powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удивительное рядом ......
8 сообщений из 8, страница 1 из 1
Удивительное рядом ......
    #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
Удивительное рядом ......
    #32063069
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставить в начале процедуры
SET NOCOUNT ON
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063070
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET NOCOUNT ON в начало процедуры.
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063072
Raven#377
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А куда именно ???.... потому что в СИКВЕЛ я еще слабоват ....:(
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063074
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу после AS
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063077
Raven#377
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to all: не помогает ..... :(
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063082
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql = " SET NOCOUNT ON DECLARE @Result int, @SessionID int.....
...
Рейтинг: 0 / 0
Удивительное рядом ......
    #32063088
Raven#377
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое всем ...... помогло ... :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удивительное рядом ......
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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