1。写一个存储过程:通过参数指定要查询的表名,字段,通过输出参数 得到查询(100分)

F

fg007

Unregistered / Unconfirmed
GUEST, unregistred user!
1。写一个存储过程:通过参数指定要查询的表名,字段,通过输出参数 得到查询
到的值!
CREATE PROCEDURE MyCheckSame
@TableName varchar(30)=null ,
@CheckSame int output

as
如果用exec('select * from '+@tableName ) 这样不能取得数据。
2。以上是用于在Insert 数据时,用指定的字段的值判断是否已存在相同的值,
(ID,Name,age) 其中Name 不能有同名的。
如用唯一索引这样不是很灵活,因有30个这样的表,每个表insert,update 时 我
想用通用的子程序来检测所有表,

 
1建立一个#Temp表,insert到这个表中,select from #Temp表。这肯定可以工作

2试试sp_executesql,我没有测试过,不知能不能工作!





 
CREATE PROCEDURE MyCheckSame
@TableName varchar(30)=null ,
@CheckSame int output

as
if EXISTS(Select name
from sysobjects
Where name=@TableName
AND Type='t')
begin
@CheckSame=1 --//假设这儿表示又此表了

end
 
我也关注。
 
CREATE PROCEDURE MyCheckSame
@TableName varchar(30)=null ,
@CheckSame int output

as
select * from table_name where field1=@tablename and field2=@checksame

然后再在DELPHI中根据存储过程判断就OK
 
为什么我的delphi总是找不到参数


我的存储过程如下
CREATE PROCEDURE TestSum @MySum int output AS
Select @MySum = Count(EmployeeID) From Employees
GO

我的delphi代码如下:
with StoredProc1 do
begin
ExecProc;
storedproc1.Params.Create;
i:=storedproc1.ParamByName('@MySum').Value; ////找不到@mysun这个参数
end;
 
就是sp_executesql,我一直就用他.
你必须用他,你传来的的参数被认为是字符串变量,并不是一个SQL的表名标识
 
定个邮件,不求分。
 
多人接受答案了。
 
顶部