直接换成实际参数内容来执行你的 'select top '+cast(@n as varchar(10))+' * from (select * from Majors where major='''+@major+''' and type='''+@type+''') A order by newid()' 语句有结果吗,参考资料说除了CREATE DEFAULT CREATE TRIGGER CREATE PROCEDURE CREATE VIEW CREATE RULE 外的成批处理的 Transact-SQL 代码都可用于创建存储过程
跟一下 @str 的值, 然后在执行看结果, exec(@str)
to bys_home(浪子无痕) :能麻烦你将该sql改成你所说的调用系统存贮过程?我不知道怎么写。to outspace(零度空间):你直接换成实际参数内容是什么意思?是以下这样吗? CREATE PROCEDURE topn @major varchar(6), @type varchar(2), @n int as declare @str varchar(5000) set @str= 'select top '+cast(@n as varchar(10))+' * from (select * from hardMajors where major='''+'汽车专业'+''' and type='''+'填空题'+''') A order by newid()' exec(@str) go exec topn '汽车专业','填空题',4 这样执行结果倒是正常。
(select * from Majors where major='''+@major+''' and type='''+@type+''') A order by newid()'
语句有结果吗,参考资料说除了CREATE DEFAULT CREATE TRIGGER CREATE PROCEDURE CREATE VIEW CREATE RULE 外的成批处理的 Transact-SQL 代码都可用于创建存储过程
CREATE PROCEDURE topn
@major varchar(6),
@type varchar(2),
@n int
as
declare @str varchar(5000)
set @str= 'select top '+cast(@n as varchar(10))+' * from
(select * from hardMajors where major='''+'汽车专业'+''' and type='''+'填空题'+''') A order by newid()'
exec(@str)
go
exec topn '汽车专业','填空题',4
这样执行结果倒是正常。
@major varchar(8),
@type varchar(8),
感谢各位!