create proc proc__ @n int output,@nn varchar(100) as select @n=100 select a.name from syscolumns a join sysobjects b on a.id=b.id and b.name=@nn declare @n int exec proc__ @n output,'jobs' print convert(nvarchar(1000),@n)
create proc p @i int output as select @i=100return @i
谢谢各位兄弟,在一段帮助里面找到这句话:用于SQL Server的Microsoft OLE DB提供程序或SQL Server ODBC驱动程序回返回代码和输出参数值防止在绑定的变量中(存储过程),在返回给客户端的最后一个数据包中,Microsoft SQL Server返回输出参数和返回代码。因此,只有在应用程序处理或取消存储过程所返回的所有结果集后,才可以访问返回代码和输出参数值。 按照这段说法,在我的存储过程中返回的时候,得到的结果集还没有处理完,所以不能得到输出参数。这是不是sql server的一个不合理的地方呢?
@lRecordCount INTEGER OUTPUT
AS
DECLARE @I INT
SET @I=200
SELECT * FROM TableName
SET @lRecordCount = @IGO
@lRecordCount INTEGER OUTPUT
AS
SELECT * FROM TableName
SET @lRecordCount = 200
GO
其实我的本意是想得到查询得到的记录数量,即
SET @lRecordCount = @@ROWCOUNT
我在查询分析器中确实看到@lRecordCount得到了正确的值,但是在vc中调用的时候,就是得不到正确的值
@lRecordCount INTEGER OUTPUT
AS
SELECT * FROM TableName
SET @lRecordCount = @@ROWCOUNTGO
DWORD dwRecordCount(0);
SDWORD sqlParamLen = 0;
::SQLBindParameter(hStmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG, SQL_INTEGER, sizeof(DWORD), 0, &dwRecordCount, sizeof(DWORD), &sqlParamLen);
我的email:[email protected]
create proc proc__
@n int output,@nn varchar(100)
as
select @n=100
select a.name
from syscolumns a join sysobjects b on a.id=b.id and b.name=@nn
declare @n int
exec proc__ @n output,'jobs'
print convert(nvarchar(1000),@n)
@i int output
as
select @i=100return @i