@tablename,@fieldname是字串.
select * from 一个字串 是什么意思?
相当于执行
select * from 'abcde'将
select * from @tablename WHERE @FieldName=@Val
改为
exec('select * from ' + @tablename + ' WHERE ' +@FieldName + '=''' + @Val + '''')
select * from 一个字串 是什么意思?
相当于执行
select * from 'abcde'将
select * from @tablename WHERE @FieldName=@Val
改为
exec('select * from ' + @tablename + ' WHERE ' +@FieldName + '=''' + @Val + '''')
CREATE function func_check( @tablename varchar(20), @fieldname varchar(20), @val varchar(20))
returns int
as
begin
declare @s nvarchar(300)
declare @id int
set @s= 'select * from '+@tablename+ ' WHERE '+@FieldName+ '= '+@Val
exec(@s)
if @@rowcount> 0
return 1
else
return 0
return @id
end
returns int
as
begin
declare @select varchar(300)
declare @id int
set @select = 'select * from '+@tableName + ' where '+ @fieldname + ' = '''+ @val+''''
exec @select
if @@rowcount > 0
set @id = 1
else
set @id = 0
return @id
end
執行你的代碼為什麼會出現"在函数内不正确地使用了 'EXECUTE '"
(
@tablename varchar(20),
@fieldname varchar(20),
@val varchar(20)
)
as
begin
declare @select varchar(8000)
declare @id int
set @select ='select * from '+@tableName+' where '+@fieldname+'='''+@val+''''exec (@select) --执行语句
if @@rowcount > 0
set @id = 1
else
set @id = 0 return @id --返回过程值end
執行你的代碼的在檢測語法的時候沒有問題。但在調用的時候會出錯,提示找不預存程序。我調用程序的代碼如下:
procedure TForm1.SpeedButton7Click(Sender: TObject);
var
ADOTest:TAdoquery;
s:string;
begin
s:=trim(DBEdit1.text);
ADOTest:=TADOQuery.Create(nil);
with ADOTest do
begin
close;
sql.Clear;
connection:=form1.ADOConnection1;
showmessage('select odb.fun_check(''boma'',''ma01'','''+s+''')');
sql.Add('select dbo.fun_check(''boma'',''ma01'','''+s+''')');
open;
end;
if adotest.Fields[0].value=1 then
begin
application.MessageBox('記錄已經存在','信息提示',mrok);
abort;
end;
end;
請幫我看一下,問題出在那里.謝謝!