|
|
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
все дело на VC++ и SQL2000 есть некая extended stored procedure "xp_Proc1" в этой процедуре присваивается значение выходному параметру DWORD dwData=123456; srv_paramsetoutput(srvproc, 2,(BYTE*)&dwData,sizeof(DWORD), FALSE) вызываем эту процедуру _ParameterPtr p=cmd->CreateParameter(L"name",adVarChar,adParamInput,sizeof(TCHAR)*strlen(szname),szname); cmd->Parameters->Append(p); p=cmd->CreateParameter(L"@pdata",adUnsignedBigInt,adParamOutput,sizeof(DWORD)); cmd->Parameters->Append(p); cmd->CommandText="master..xp_Proc1"; cmd->Execute(NULL,NULL,adCmdStoredProc); Процедура нормально отрабатывает, ошибок не выдает, но после "Execute" пытаюсь прочитать выходной параметр DWORD dwLen=cmd->Parameters->Item[1L]->Value; и ничего - всегда 0 Как же получить значение Еще один момент: Пишем дополнительно обычную stored procedure "sp_Proc2" CREATE PROCEDURE sp_proba1 @name VARCHAR, @pdata BIGINT OUTPUT AS exec master..xp_Proc1 @name, @pdata OUTPUT GO вызываем аналогично (только cmd->CommandText="sp_Proc2") Так в этом случае в ext.proc. "xp_Proc1" в качестве первого параметра (строка) передается только первый символ а выходной параметр все равно ==0 Почему в этом случае передается только один(первый) символ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 14:51 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
По идее вызов с клиента XP и SP не должны ничем отличаться. OpenServer или (у MS) ODS для этого и нужны. Попробуй поискать где ошибка в XP. Может там что-то не так. Попробуй повызывать из другой процедуры (SP) и добиться того, чтобы приходили и уходили параметры правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 21:56 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
а что происходит если сделать так в QA? Код: plaintext 1. 2. какой выдается результат ? в коде ошибок у тебя нету. вот что у меня было с crc64 : Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 23:08 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
В общем дело оказалось в типах данных Во-первых почему-то не воспринимаются adUnsignedBigInt просто adUnsignedInt (и INT соотв) -пожалуйста, заработало Во-вторых CREATE PROCEDURE sp_proba1 @name VARCHAR здесь при объявлении надо было указать длину VARCHAR Если заменить на TEXT - то тогда не надо указывать длину строки С этим разобрался, появилось новое пока не могу получить одновременно и значение вызодного параметра, и набор данных т.е. при вызове _RecordsetPtr rstt=cmd->Execute(NULL,NULL,adCmdStoredProc); значение выходного параметра опять в 0 Да и с наботом записей заморочки - если формируется один столбец с типом SRVIMAGE - то нормально потом считывается, а вот если добавить еще один столбец - то получается всякая ерунда (именно со столбцом с бинарными данными) Бедем разбираться дальше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 01:03 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
авторС этим разобрался, появилось новое пока не могу получить одновременно и значение вызодного параметра, и набор данных т.е. при вызове Значение выходных параметров нужно получать после того, как дофетчен/закрыт набор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 14:52 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
вроде как в самом скуле есть хорошие примеры ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 21:53 |
|
||
|
Как на VC++ получить выходной параметр extended stored procedure
|
|||
|---|---|---|---|
|
#18+
СтарыйПеньВ общем дело оказалось в типах данных Во-первых почему-то не воспринимаются adUnsignedBigInt просто adUnsignedInt (и INT соотв) -пожалуйста, заработало да это так, даже в QA обрезается unsigned __int64 из esp. А если попробовать adBigInt ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 06:44 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=368&tid=2031826]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 351ms |

| 0 / 0 |
