相关疑难解决方法(0)

创建具有相同列和类型作为永久表的临时表的最佳方法

我需要创建一个具有相同列和类型的临时表作为永久表.最好的方法是什么?(永久表有超过100列)

通常我会像这样创建表格.

DECLARE  #TT TABLE(              
  member_id INT,    
  reason varchar(1),    
  record_status varchar(1) ,    
  record_type varchar(1)    
 ) 
Run Code Online (Sandbox Code Playgroud)

但有没有办法在不提及列名和类型的情况下执行此操作,但是提及具有所需列的另一个表的名称?

sql sql-server

60
推荐指数
4
解决办法
9万
查看次数

动态SQL在SQL存储过程中生成临时表

代码如下:

ALTER PROCEDURE dbo.pdpd_DynamicCall 
@SQLString varchar(4096) = null

AS

Begin

    create TABLE #T1 ( column_1 varchar(10) , column_2 varchar(100) )

    insert into #T1 
        execute ('execute ' + @SQLString )

    select * from #T1 

End
Run Code Online (Sandbox Code Playgroud)

问题是我想调用可以返回不同列的不同过程.因此,我必须一般地定义表#T1.但我不知道怎么做.

任何人都可以帮我解决这个问题吗?

t-sql sql-server dynamic-sql

44
推荐指数
5
解决办法
17万
查看次数

检索存储过程的列名和类型?

可能重复:
检索存储过程结果集的列定义

我使用以下SQL来获取表或视图的列名和类型:

DECLARE @viewname varchar (250);

select a.name as colname,b.name as typename 
from syscolumns a, systypes b -- GAH!
where a.id = object_id(@viewname) 
and a.xtype=b.xtype 
and b.name <> 'sysname'
Run Code Online (Sandbox Code Playgroud)

如何为存储过程的输出列执行类似的操作?

sql sql-server

39
推荐指数
1
解决办法
7万
查看次数

我可以使用Order by对存储过程结果进行排序吗?

简单地说,我有这个SQL语句:

EXEC xp_cmdshell 'tasklist' 
Run Code Online (Sandbox Code Playgroud)

我们可以使用order by或订购或过滤结果where吗?

谢谢,

t-sql stored-procedures

22
推荐指数
2
解决办法
3万
查看次数

在T-SQL中组合存储过程和查询

如何组合执行存储过程并在常规SQL查询中使用其结果或参数?

例如,我想做类似以下的事情:

-- passing result of SELECT to SP
SELECT a, b FROM t
EXEC my_sp a, b

-- passing result of SP to INSERT    
INSERT INTO t
EXEC my_sp a, b
Run Code Online (Sandbox Code Playgroud)

等等

sql t-sql sql-server stored-procedures dml

19
推荐指数
1
解决办法
4万
查看次数

MySQL如何插入[临时表] FROM [存储过程]

这与问题653714非常相似,但对于MySQL而不是SQL Server.

基本上,我有一个复杂的选择,这是几个存储过程的基础.我想在存储过程中共享代码,但是,我不知道如何做到这一点.我可以这样做的一种方法是使共享选择一个存储过程,然后从其他存储过程调用该存储过程.我无法弄清楚如何使用嵌套存储过程的结果集.如果我可以将它们放在临时表中,我可以有效地使用结果,但我无法弄清楚如何在临时表中获取它们.例如,这不起作用:

CREATE TEMPORARY TABLE tmp EXEC nested_sp();
Run Code Online (Sandbox Code Playgroud)

mysql sql stored-procedures

17
推荐指数
5
解决办法
5万
查看次数

将存储过程的结果保存在Table变量中

可能重复:
如何选择*INTO [临时表] FROM [存储过程]

我有一个嵌套的存储过程调用

在其中一个存储过程中,我想将结果保存到表变量中,如下所示:

INSERT INTO @myTable 
EXEC sp_myStoredProcedure
Run Code Online (Sandbox Code Playgroud)

但是,因为proc.嵌套发生以下错误:INSERT EXEC语句不能嵌套

必须从另一个过程调用该过程,更改此选项不是一个选项.我想尝试使用输出参数,但仍然必须使用Insert into语句进行设置.

将从存储过程调用中检索到的数据保存到变量中的其他选项有哪些?

sql sql-server stored-procedures exec sql-server-2008

14
推荐指数
1
解决办法
3万
查看次数

Exec存储过程进入动态临时表

据我所知; 我想做的事情在sql中是不可能的,但值得问你们.

假设我有一个存储过程abc,它返回列Id和Value.由于功能原因,此存储过程主要由其他部门使用,我将不时地使用它来进行数据检查.

所以使用它作为我的存储过程的一部分:

DECLARE @tABC TABLE
(
   ID      INT,
   Value   DECIMAL(12,2)
)

INSERT INTO @tABC
   EXEC OtherDb.DataProd.abc
Run Code Online (Sandbox Code Playgroud)

Oky因此现在可以完美地工作,但是如果他们改变了存储过程的结构呢?

在存储过程中添加或删除列会破坏我的代码,因此有一种方法可以使我的代码更加灵活.

我最后一次绝望的尝试是这样的:

WITH tempTable AS
(
    EXEC OtherDb.DataProd.abc
)
SELECT ID, Value FROM tempTable
Run Code Online (Sandbox Code Playgroud)

这显然是悲惨地失败了.

sql t-sql sql-server stored-procedures

14
推荐指数
2
解决办法
8万
查看次数

SQL Server:将存储过程结果集放入表变量中,而不指定其模式

我有一个包含许多参数的存储过程.

我想插入(或者可能选择)这样:

INSERT INTO @TEMP_TABLE
    EXECUTE STORED_PROCEDURE
Run Code Online (Sandbox Code Playgroud)

没有定义的架构@TEMP_TABLE.

t-sql sql-server sql-server-2008

12
推荐指数
2
解决办法
8万
查看次数

实体框架存储过程结果映射

在过去的几天里,我通过互联网查找了类似的问题.我终于自己提出这个问题.

使用代码优先方法和EF 4.3.1,我创建了一个上下文类,实体类和类来存储存储过程输出.上下文类具有使用执行某些存储过程的方法SqlQuery<T>.

例:

public IEnumerable<Results> GetData(int id)
{
   var parameters = new SqlParameter[] { new SqlParameter("@id", id) };
   var result = this.Database.SqlQuery<Result>("Exec dbo.sproc_GetData @id",    parameters);
   var data= result.ToList<Result>();

   return data;
}
Run Code Online (Sandbox Code Playgroud)

当我跟踪调试时,我的数据又回来了,数据被映射到具有匹配名称的属性.但是,在输出中有一个"/"名称中带有a的列(示例:) Info/Data.显然我不能命名这样的属性所以我想我可以使用column属性([Column("Info/Data")])映射输出:

[Column("Info/Data")]
public string InfoData
{
   get { return infoData; }
   set { infoData= value; }
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试使用verbatim运算符([Column(@"Info/Data")]),用[]([Column("[Info/Data]")])包装文本,我尝试了两个([Column(@"[Info/Data]")]).单步执行代码时,我看到分配了具有匹配列名的属性,但是在分配期间会忽略具有column属性的属性.

我还为实体的每一列尝试了fluent-api.

    modelBuilder.ComplexType<Result>().Property(d => d.InfoData).HasColumnName("Info/Data");
Run Code Online (Sandbox Code Playgroud)

但是会抛出以下异常:

数据读取器与指定的"NameSpace.Result"不兼容.类型为"InfoData"的成员在数据读取器中没有具有相同名称的相应列.

在我的项目中NameSpace.Result是一个类(名称已更改为安全性),并且InfoDatais是我尝试使用fluent-api映射的属性(相应的sql列中包含/; ex:Info/Data).

有没有人遇到过这个问题?

如果我的问题不明确或者之前有人问过,请告诉我.

.net c# entity-framework

12
推荐指数
1
解决办法
1万
查看次数