要组合动态的SQL需要用exec('your SQL Statement'),所以你的解决方法应该为: exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
to jamfang(大雄) : 存储过程中提示 exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...'); 在第一个=附近有错,如果去掉@FileName+就正确了,即 exec('Select FileName From "+@TableName+" Where Number=...'); 但查询的结果无法返回,如何解决,分不够可以在加,只要你开个口
exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...') 中为什么不能有返回参数@FileName
不好意思呀小李,我不小心把单引号写成双引号了,很久没上来没看见你回复了,sorry. 正确的应该是: declare @FieldName as varchar(20) declare @TableName as varchar(20) Select @FieldName = 'your field names' Select @TableName = 'your table name' exec('Select FieldName='+@FieldName+' From '+@TableName + ' where....')
exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
存储过程中提示
exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
在第一个=附近有错,如果去掉@FileName+就正确了,即
exec('Select FileName From "+@TableName+" Where Number=...');
但查询的结果无法返回,如何解决,分不够可以在加,只要你开个口
中为什么不能有返回参数@FileName
正确的应该是:
declare @FieldName as varchar(20)
declare @TableName as varchar(20)
Select @FieldName = 'your field names'
Select @TableName = 'your table name'
exec('Select FieldName='+@FieldName+' From '+@TableName + ' where....')
首先非常感谢你还能记着我的这个帖子
exec('Select FieldName='+@FieldName+' From '+@TableName + ' where....')
根据条件执行后结果应是只包含一个字段的一条记录,问题是如何在应用程序中得到这个结果
我的帖子会在你每回一次加20分,先加20
call=conn.prepareCall("{ call addperson (?,?,?) }");
call.registerOutParameter(3,java.sql.Types.INTEGER);
call.setString(1, "小路");
call.setString(2, "女");
call.execute(); int id=call.getInt(3);
谢谢你,是我没表达清除,我的意思是在存储过程中如何实现,也就是说exec('Select Field='+@FieldName+' From '+@TableName + ' where....')将查询结果放在Field中,但是如何返回呢?
比如
CREATE PROCEDURE GetName
@Name varchar(20) OUTPUT
AS
SELECT @Name = Name FROM Employee WHERE ID = 1
return
GO
这样就可以将查询结果通过@Name代回
如果写成这样:
CREATE PROCEDURE GetFileName
@TableName varchar(20),
@FileName varchar(20) OUTPUT
AS
declare @FieldName as varchar(20)
declare @FieldName1 as varchar(20)
Select @FieldName = 'FileName'
Select @FieldName1 = ''
exec('Select ' + @FieldName1 + ' = ' + @FieldName + ' From ' + @TableName + ' Where Number = 1')
Select @FileName = @FieldName1
return
GO
则得到的结果是个空串,也就是说前面Select @FieldName1 = ''给@FieldName1赋什么字符串,返回的就是什么字符串
這將會是我最後一次回答你的問題如果你不屢行你的話.
用以下方法可得到:
return exec('Select'+....)
外面可通過"{?=call getFileName(?,..?)}",registerOutParameter(1,java.sql.Type.INTEGER),執行后getString(1)出來就可以了.
最近有事,现在补上90
@TableName varchar(20),
@FileName varchar(20) OUTPUT
ASDeclare @sql varchar(128)Create table #temp (FileName varchar(20))@sql='insert #temp select Filename from '+@TableName+ ' where Number=...'Exec (@sql)select @FileName= FileName from #tempDrop Table #tempGO