CREATE PROCEDURE PositionPersonMap_ADD
@ID varchar(10),
@PositionID varchar(32),
@PersonID varchar(32)
AS
INSERT INTO PositionPersonMap([ID],[PositionID],[PersonID])
VALUES(@ID,@PositionID,@PersonID)
你这里少写了@ID这个参数了吧.没有这个参数,会报错的.因为你后面用到了这个参数,至于你说的存储数据顺序问题,看下面的源代码:
use TestDB
create table PositionPersonMap
(
ID varchar(10),
PositionID varchar(32),
PersonID varchar(32)
)
select * from Test
PositionPersonMap_ADD '1','2','3'
CREATE PROCEDURE PositionPersonMap_ADD
@ID varchar(10),
@PositionID varchar(32),
@PersonID varchar(32)
AS
INSERT INTO PositionPersonMap([ID],[PositionID],[PersonID])
VALUES(@ID,@PositionID,@PersonID)
drop procedure PositionPersonMap_ADD
当你执行了存储过程后,表里的数据是 1,2,3
当你把@PersonID varchar(32),@PositionID varchar(32)交换后,再次执行,表里的数据是 1,3,2
显而易见,数据库是根据参数类分配的.你把参数位置换了,数据自然也就交换了位置,它并不是根据,前后对应的策略;如:@PersonID 对应[PositionID],@PersonID 对应,[PersonID],而是[ID],[PositionID],[PersonID]和@ID,@PositionID,@PersonID一一相互对应,前面第一和后面第一个对应,前面第二个和后面第二个对应,同理,第三个.
其实这个和 INSERT INTO PositionPersonMap([ID],[PositionID],[PersonID]) VALUES ('1','2','3') INSERT INTO PositionPersonMap([ID],[PositionID],[PersonID]) VALUES ('1','3','2')
是一样的理论,一样的结果;
希望能帮上什么忙.