痛苦啊!大家快点来救救我啊,我们做的系统差不多全部崩溃了! !

my_randy 2005-04-19 11:33:20
我们做的系统,执行插入语句都用一个函数来做,执行完毕后返回执行插入的@@identity
整个系统差不多全部用上了.但是现在的情况是,返不回@@identity
那就意味着,整个系统不能用,我们在本地执行是一点问题都没有的,放到客户的服务器上问题就来了.
系统用ASP+SQL SERVER做的..系统放在一台服务器上,,数据库放在另一台服务器上.

以下是我用的函数,,希望大家帮帮忙呀,非常急!!

'------------------------------------------------------------------------------------
'Function Name: executeInsert(strSql)
'Parameter : strSql as varchar SQL插入语句
'
'Return : 返回公司 INENDITY
'Description : 执行插入语句,返回新插入的INENDITY
'Modify Time : 2005-4-19
'-------------------------------------------------------------------------------------
Function executeInsert(strSql)
Dim adCmdStoredProc
Dim adParaminput
Dim adParamOutput
Dim adChar
Dim adInteger
Dim adVarChar
Dim CmdCart '存储过程
Dim PrmCart '存储过程参 数

adCmdStoredProc=4
adParaminput=1
adParamOutput=2
adInteger=3
adChar=129
adVarChar=200

set CmdCart=server.CreateObject("ADODB.Command")
CmdCart.ActiveConnection = conn
CmdCart.CommandText = "pr_ExecuteInsert" '存储过程名
CmdCart.CommandType=4 '4 is a procedure type value adCmdStoredProcedure

'创建 Parameter 对象
Set PrmCart = CmdCart.CreateParameter("@sqlString",adVarChar,adParamInput,10000,strSql)
CmdCart.Parameters.Append PrmCart
Set PrmCart = CmdCart.CreateParameter("@id",adInteger,adParamOutput,255)
CmdCart.Parameters.Append PrmCart
Set PrmCart = CmdCart.CreateParameter("@ExecutStateStr",adVarChar,adParamOutput,255)
CmdCart.Parameters.Append PrmCart
CmdCart.execute

If Trim(CmdCart("@ExecutStateStr"))="执行失败" Then
setErrorMsg "执行失败,所有操作已经取消,请重新操作!" '检查错误
End If

'取得ID号
If trim(CmdCart("@id"))<>"" or Not IsNull(CmdCart("@id")) Then
executeInsert=trim(CmdCart("@id"))
End If
End Function


存储过程是:
ALTER procedure pr_ExecuteInsert
@sqlString ntext,
@id int output,
@ExecutStateStr varchar(255) output
as
begin
--执行并取唯一编号
--执行插入
execute sp_executesql @sqlString

SET @id=@@identity


--判断是否执行成功
If @@error=0
begin
Commit Tran
set @ExecutStateStr='执行成功'
end
else
begin
Rollback Tran
set @ExecutStateStr='执行失败'
end
end


大家快点来救救我啊!
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
是是非非 2005-04-19
  • 打赏
  • 举报
回复
看是不是丢失了identity列

从Access向SQL Server导入数据的时候会发生这种错误的
是是非非 2005-04-19
  • 打赏
  • 举报
回复
检查一下你的数据表

@@identity在SQL Server里面是可用的
jekexys2004 2005-04-19
  • 打赏
  • 举报
回复
关注
zzznzzzz 2005-04-19
  • 打赏
  • 举报
回复
今天发现了一个问题,像我这里的布局,存储过程在我的那条函数里面是没有返回值的,如果程序和数据库在同一台电脑上,那存储过程就有返回值,真奇怪,希望大家来探讨这个问题..


强烈关注!我也做个存储过程要返回值!也是在不同的服务器!你的临时解决办法是什么?
my_randy 2005-04-19
  • 打赏
  • 举报
回复
大家好!今天我忙了一个中午,我提出的问题得到临时的解决.
我这里原本的布局是这样的,有两台服务器.一台服务放着程序,另外一台服务器放数据库.

今天发现了一个问题,像我这里的布局,存储过程在我的那条函数里面是没有返回值的,如果程序和数据库在同一台电脑上,那存储过程就有返回值,真奇怪,希望大家来探讨这个问题..
poonzsp 2005-04-19
  • 打赏
  • 举报
回复
up
skyboy0720 2005-04-19
  • 打赏
  • 举报
回复
建议你用SCOPE_IDENTITY( )代替@@IDENTITY,
如果该表上有触发器,并且触发的表有IDENTITY列,你用@@IDENTITY返回的值将是被触发表上的值
好好看看联机丛书
itzhiren 2005-04-19
  • 打赏
  • 举报
回复
up
jzywh 2005-04-19
  • 打赏
  • 举报
回复
很有可能丢失了identity

28,405

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧