1、
SELECT
@RegionID = '9',
@RegionDescription = 'shanghai'
-->
SELECT
@RegionID = '9',
@RegionDescription = N'shanghai'
还有,表结构和declare定义的类型是否相同?2、这样有问题,需要值返回一条记录:CREATE PROCEDURE test
@id int ,
@name char(10) output ,
@address char(40) output,
@age int(4) output
as
select
@name = name ,
@address = address ,
@age = age
from student
where id=@id
go
SELECT
@RegionID = '9',
@RegionDescription = 'shanghai'
-->
SELECT
@RegionID = '9',
@RegionDescription = N'shanghai'
还有,表结构和declare定义的类型是否相同?2、这样有问题,需要值返回一条记录:CREATE PROCEDURE test
@id int ,
@name char(10) output ,
@address char(40) output,
@age int(4) output
as
select
@name = name ,
@address = address ,
@age = age
from student
where id=@id
go
CREATE PROCEDURE test
asBEGIN
DECLARE
@RegionID int,
@RegionDescription nchar(50) SELECT
@RegionID = 9,
@RegionDescription = N'shanghai'
INSERT INTO dbo.region
(
RegionID,
RegionDescription
)
VALUES
( @RegionID ,
@RegionDescription
) IF @@ERROR = 0
RETURN 0
ELSE
RETURN 1
ENDGO
-->
@age int output
CREATE PROCEDURE test
@name char(10) output ,
@address char(40) output,
@age int output
as
select
@name = name ,
@address = address ,
@age = age
from student
@RegionID int, -----int(4),
2.加条件或用TOP 1使结果记录唯一
select top 1
@name = name ,
@address = address ,
@age = age
from student
它只会抓取最上面的一笔。
其实两个地方的int(4)都改成int就可以了。
@RegionID int(4) ---改---> @RegionID int2、
@age int(4) output ---改---> @age int output经过上面的修改之后,两个存储过程的语法检查都能通过,并且执行也没有问题。